Procházet zdrojové kódy

添加H5保存图片逻辑

Pq před 3 roky
rodič
revize
c96099c3c9

+ 20 - 0
BaseLibrary/src/main/java/com/cooleshow/base/utils/FileUtils.java

@@ -1719,4 +1719,24 @@ public final class FileUtils {
             e.printStackTrace();
         }
     }
+
+    /**
+     * 保存图片到图库
+     *
+     * @param bmp
+     */
+    public static void saveImageToGallery(Bitmap bmp, String path) {
+        // 首先保存图片
+        File file = new File(path);
+        try {
+            FileOutputStream fos = new FileOutputStream(file);
+            bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
+            fos.flush();
+            fos.close();
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
 }

+ 191 - 0
student/src/main/java/com/cooleshow/student/helper/ShareHelper.java

@@ -0,0 +1,191 @@
+package com.cooleshow.student.helper;
+
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.net.Uri;
+import android.provider.MediaStore;
+import android.util.Base64;
+import android.util.Log;
+
+import com.cooleshow.base.utils.FileUtils;
+import com.cooleshow.base.utils.ToastUtil;
+import com.cooleshow.base.utils.Utils;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+
+import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
+import io.reactivex.rxjava3.core.Observable;
+import io.reactivex.rxjava3.core.ObservableEmitter;
+import io.reactivex.rxjava3.core.ObservableOnSubscribe;
+import io.reactivex.rxjava3.core.Observer;
+import io.reactivex.rxjava3.disposables.Disposable;
+import io.reactivex.rxjava3.schedulers.Schedulers;
+import io.rong.imkit.IMCenter;
+import io.rong.imlib.IRongCallback;
+import io.rong.imlib.RongIMClient;
+import io.rong.imlib.model.Conversation;
+import io.rong.imlib.model.Message;
+import io.rong.message.ImageMessage;
+
+/**
+ * Author by pq, Date on 2022/5/31.
+ */
+public class ShareHelper {
+
+    public static void saveImg(Context context, String base64, ResultCallBack resultCallBack) {
+        Observable.create(new ObservableOnSubscribe<File>() {
+            @Override
+            public void subscribe(ObservableEmitter<File> emitter) throws Exception {
+                File file = saveImgToLocalFile(base64);
+                emitter.onNext(file);
+            }
+        }).subscribeOn(Schedulers.newThread())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new Observer<File>() {
+                    @Override
+                    public void onSubscribe(Disposable d) {
+
+                    }
+
+                    @Override
+                    public void onNext(File file) {
+                        if (context != null) {
+                            try {
+                                MediaStore.Images.Media.insertImage(context.getContentResolver(),
+                                        file.getAbsolutePath(), file.getName(), null);
+                                // 最后通知图库更新
+                                context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
+                                        Uri.fromFile(new File(file.getPath()))));
+                                if (resultCallBack != null) {
+                                    resultCallBack.onResult(true);
+                                }
+                            } catch (FileNotFoundException e) {
+                                ToastUtil.getInstance().show(context, "保存失败");
+                                e.printStackTrace();
+                            }
+                        }
+                    }
+
+                    @Override
+                    public void onError(Throwable e) {
+                        if (resultCallBack != null) {
+                            resultCallBack.onResult(false);
+                        }
+                    }
+
+                    @Override
+                    public void onComplete() {
+
+                    }
+                });
+    }
+
+    public static void shareImgToChatGroup(String base64, String targetId, Conversation.ConversationType conversationType, ResultCallBack resultCallBack) {
+        Observable.create(new ObservableOnSubscribe<String>() {
+            @Override
+            public void subscribe(ObservableEmitter<String> emitter) throws Exception {
+                File file = saveImgToLocalFile(base64);
+                Message imageMessage = createImageMessage(file, targetId, conversationType);
+                IMCenter.getInstance().sendMessage(imageMessage, null, null, new IRongCallback.ISendMessageCallback() {
+                    @Override
+                    public void onAttached(Message message) {
+
+                    }
+
+                    @Override
+                    public void onSuccess(Message message) {
+                        Log.i("pq", "message send success");
+                        if (resultCallBack != null) {
+                            resultCallBack.onResult(true);
+                        }
+                    }
+
+                    @Override
+                    public void onError(Message message, RongIMClient.ErrorCode errorCode) {
+                        Log.i("pq", "message send onError:" + errorCode);
+                        if (resultCallBack != null) {
+                            resultCallBack.onResult(false);
+                        }
+                    }
+                });
+                emitter.onNext("");
+            }
+        }).subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new Observer<String>() {
+                    @Override
+                    public void onSubscribe(Disposable d) {
+
+                    }
+
+                    @Override
+                    public void onNext(String s) {
+                        if (resultCallBack != null) {
+                            resultCallBack.onResult(true);
+                        }
+                    }
+
+                    @Override
+                    public void onError(Throwable e) {
+                        e.printStackTrace();
+                        if (resultCallBack != null) {
+                            resultCallBack.onResult(false);
+                        }
+                    }
+
+                    @Override
+                    public void onComplete() {
+
+                    }
+                });
+    }
+
+    private static Message createImageMessage(String base64, Conversation conversation) {
+        ImageMessage imageMessage = ImageMessage.obtain();
+        imageMessage.setBase64(base64);
+        Message message = new Message();
+        message.setTargetId(conversation.getTargetId());
+        message.setContent(imageMessage);
+        message.setConversationType(conversation.getConversationType());
+        return message;
+    }
+
+    private static File saveImgToLocalFile(String base64) {
+        byte[] bytes;
+        if (base64.startsWith("data:image/png;base64")) {
+            String[] split = base64.split(",");
+            bytes = Base64.decode(split[1], Base64.DEFAULT);
+        } else {
+            bytes = Base64.decode(base64, Base64.DEFAULT);
+        }
+        Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
+        File parentFile = new File(FileUtils.getCacheDir(Utils.getApp()) + File.separator + "share");
+        if (!parentFile.exists()) {
+            parentFile.mkdirs();
+        }
+        String targetFileName = "IMG_" + new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date()) + ".png";
+        File file = new File(parentFile, targetFileName);
+        FileUtils.saveImageToGallery(bitmap, file.getAbsolutePath());
+        return new File(file.getAbsolutePath());
+    }
+
+    private static Message createImageMessage(File file, String targetId, Conversation.ConversationType conversationType) {
+        Uri uri = Uri.fromFile(file);
+        ImageMessage imageMessage = ImageMessage.obtain(uri, uri);
+        Message message = new Message();
+        message.setTargetId(targetId);
+        message.setContent(imageMessage);
+        message.setConversationType(conversationType);
+        return message;
+    }
+
+    public interface ResultCallBack {
+        void onResult(boolean isSuccess);
+    }
+}

+ 33 - 13
student/src/main/java/com/cooleshow/student/ui/web/HtmlActivity.java

@@ -56,6 +56,7 @@ import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.ToastUtils;
 import com.cooleshow.base.utils.UriUtils;
+import com.cooleshow.base.utils.helper.DialogHelper;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.base.utils.helper.upload.UploadHelper;
 import com.cooleshow.base.widgets.DialogUtil;
@@ -66,6 +67,7 @@ import com.cooleshow.student.bean.alipay.AuthResult;
 import com.cooleshow.student.bean.alipay.PayResult;
 import com.cooleshow.student.bean.weixinpay.WeixinPayInfo;
 import com.cooleshow.student.databinding.ActivityHtml1Binding;
+import com.cooleshow.student.helper.ShareHelper;
 import com.cooleshow.student.ui.live.LiveRoomActivity;
 import com.cooleshow.student.widgets.FileUtils;
 import com.cooleshow.student.widgets.LollipopFixedWebView;
@@ -649,19 +651,24 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
 
     @Override
     public void savePicture(String base64, String uuid) {
-        Bitmap bitmap = FileUtils.base64ToBitmap(base64);
-        if (SavePicUtil.saveBitmap(BaseApplication.Companion.getContext(), bitmap, System.currentTimeMillis() + "")) {
-            ToastUtil.getInstance().showShort("保存成功");
-        } else {
-            ToastUtil.getInstance().showShort("保存失败");
-        }
-
-        try {
-            JSONObject jsonObject = new JSONObject();
-            jsonObject.put("api", "downloadFile");
-        } catch (JSONException e) {
-            e.printStackTrace();
-        }
+        new RxPermissions(this)
+                .request(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .subscribe(permission -> {
+                    if (permission) {
+                        ShareHelper.saveImg(this, base64, new ShareHelper.ResultCallBack() {
+                            @Override
+                            public void onResult(boolean isSuccess) {
+                                if (isSuccess) {
+                                    sendCallBack("savePicture", uuid, "success");
+                                } else {
+                                    sendCallBack("savePicture", uuid, "error");
+                                }
+                            }
+                        });
+                    } else {
+                        DialogHelper.showTipDialog(this, "保存文件需要储存权限,去设置?");
+                    }
+                });
     }
 
     private boolean goPay = false;
@@ -1383,6 +1390,19 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
         }
     }
 
+    private void sendCallBack(String api, String uuid, Object o) {
+        JSONObject jsonObject = new JSONObject();
+        JSONObject contentJson = new JSONObject();
+        try {
+            jsonObject.put("api", api);
+            contentJson.put("status", o);
+            contentJson.put("uuid", uuid);
+            jsonObject.put("content", contentJson);
+            onSendMessage(jsonObject.toString());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
 }
 
 

+ 34 - 1
student/src/main/java/com/cooleshow/student/ui/web/HtmlHorizontalScreenActivity.java

@@ -54,6 +54,7 @@ import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.ToastUtils;
 import com.cooleshow.base.utils.UriUtils;
+import com.cooleshow.base.utils.helper.DialogHelper;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.base.utils.helper.upload.UploadHelper;
 import com.cooleshow.base.widgets.DialogUtil;
@@ -64,6 +65,7 @@ import com.cooleshow.student.bean.alipay.AuthResult;
 import com.cooleshow.student.bean.alipay.PayResult;
 import com.cooleshow.student.bean.weixinpay.WeixinPayInfo;
 import com.cooleshow.student.databinding.ActivityHtml1Binding;
+import com.cooleshow.student.helper.ShareHelper;
 import com.cooleshow.student.widgets.FileUtils;
 import com.cooleshow.student.widgets.LollipopFixedWebView;
 import com.cooleshow.student.widgets.helper.JsInterfaceUtils;
@@ -618,7 +620,24 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
 
     @Override
     public void savePicture(String base64, String uuid) {
-
+        new RxPermissions(this)
+                .request(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .subscribe(permission -> {
+                    if (permission) {
+                        ShareHelper.saveImg(this, base64, new ShareHelper.ResultCallBack() {
+                            @Override
+                            public void onResult(boolean isSuccess) {
+                                if (isSuccess) {
+                                    sendCallBack("savePicture", uuid, "success");
+                                } else {
+                                    sendCallBack("savePicture", uuid, "error");
+                                }
+                            }
+                        });
+                    } else {
+                        DialogHelper.showTipDialog(this, "保存文件需要储存权限,去设置?");
+                    }
+                });
     }
 
     private boolean goPay = false;
@@ -1324,4 +1343,18 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
             e.printStackTrace();
         }
     }
+
+    private void sendCallBack(String api, String uuid, Object o) {
+        JSONObject jsonObject = new JSONObject();
+        JSONObject contentJson = new JSONObject();
+        try {
+            jsonObject.put("api", api);
+            contentJson.put("status", o);
+            contentJson.put("uuid", uuid);
+            jsonObject.put("content", contentJson);
+            onSendMessage(jsonObject.toString());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
 }

+ 191 - 0
teacher/src/main/java/com/cooleshow/teacher/helper/ShareHelper.java

@@ -0,0 +1,191 @@
+package com.cooleshow.teacher.helper;
+
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.net.Uri;
+import android.provider.MediaStore;
+import android.util.Base64;
+import android.util.Log;
+
+import com.cooleshow.base.utils.FileUtils;
+import com.cooleshow.base.utils.ToastUtil;
+import com.cooleshow.base.utils.Utils;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+
+import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
+import io.reactivex.rxjava3.core.Observable;
+import io.reactivex.rxjava3.core.ObservableEmitter;
+import io.reactivex.rxjava3.core.ObservableOnSubscribe;
+import io.reactivex.rxjava3.core.Observer;
+import io.reactivex.rxjava3.disposables.Disposable;
+import io.reactivex.rxjava3.schedulers.Schedulers;
+import io.rong.imkit.IMCenter;
+import io.rong.imlib.IRongCallback;
+import io.rong.imlib.RongIMClient;
+import io.rong.imlib.model.Conversation;
+import io.rong.imlib.model.Message;
+import io.rong.message.ImageMessage;
+
+/**
+ * Author by pq, Date on 2022/5/31.
+ */
+public class ShareHelper {
+
+    public static void saveImg(Context context, String base64, ResultCallBack resultCallBack) {
+        Observable.create(new ObservableOnSubscribe<File>() {
+            @Override
+            public void subscribe(ObservableEmitter<File> emitter) throws Exception {
+                File file = saveImgToLocalFile(base64);
+                emitter.onNext(file);
+            }
+        }).subscribeOn(Schedulers.newThread())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new Observer<File>() {
+                    @Override
+                    public void onSubscribe(Disposable d) {
+
+                    }
+
+                    @Override
+                    public void onNext(File file) {
+                        if (context != null) {
+                            try {
+                                MediaStore.Images.Media.insertImage(context.getContentResolver(),
+                                        file.getAbsolutePath(), file.getName(), null);
+                                // 最后通知图库更新
+                                context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
+                                        Uri.fromFile(new File(file.getPath()))));
+                                if (resultCallBack != null) {
+                                    resultCallBack.onResult(true);
+                                }
+                            } catch (FileNotFoundException e) {
+                                ToastUtil.getInstance().show(context, "保存失败");
+                                e.printStackTrace();
+                            }
+                        }
+                    }
+
+                    @Override
+                    public void onError(Throwable e) {
+                        if (resultCallBack != null) {
+                            resultCallBack.onResult(false);
+                        }
+                    }
+
+                    @Override
+                    public void onComplete() {
+
+                    }
+                });
+    }
+
+    public static void shareImgToChatGroup(String base64, String targetId, Conversation.ConversationType conversationType, ResultCallBack resultCallBack) {
+        Observable.create(new ObservableOnSubscribe<String>() {
+            @Override
+            public void subscribe(ObservableEmitter<String> emitter) throws Exception {
+                File file = saveImgToLocalFile(base64);
+                Message imageMessage = createImageMessage(file, targetId, conversationType);
+                IMCenter.getInstance().sendMessage(imageMessage, null, null, new IRongCallback.ISendMessageCallback() {
+                    @Override
+                    public void onAttached(Message message) {
+
+                    }
+
+                    @Override
+                    public void onSuccess(Message message) {
+                        Log.i("pq", "message send success");
+                        if (resultCallBack != null) {
+                            resultCallBack.onResult(true);
+                        }
+                    }
+
+                    @Override
+                    public void onError(Message message, RongIMClient.ErrorCode errorCode) {
+                        Log.i("pq", "message send onError:" + errorCode);
+                        if (resultCallBack != null) {
+                            resultCallBack.onResult(false);
+                        }
+                    }
+                });
+                emitter.onNext("");
+            }
+        }).subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new Observer<String>() {
+                    @Override
+                    public void onSubscribe(Disposable d) {
+
+                    }
+
+                    @Override
+                    public void onNext(String s) {
+                        if (resultCallBack != null) {
+                            resultCallBack.onResult(true);
+                        }
+                    }
+
+                    @Override
+                    public void onError(Throwable e) {
+                        e.printStackTrace();
+                        if (resultCallBack != null) {
+                            resultCallBack.onResult(false);
+                        }
+                    }
+
+                    @Override
+                    public void onComplete() {
+
+                    }
+                });
+    }
+
+    private static Message createImageMessage(String base64, Conversation conversation) {
+        ImageMessage imageMessage = ImageMessage.obtain();
+        imageMessage.setBase64(base64);
+        Message message = new Message();
+        message.setTargetId(conversation.getTargetId());
+        message.setContent(imageMessage);
+        message.setConversationType(conversation.getConversationType());
+        return message;
+    }
+
+    private static File saveImgToLocalFile(String base64) {
+        byte[] bytes;
+        if (base64.startsWith("data:image/png;base64")) {
+            String[] split = base64.split(",");
+            bytes = Base64.decode(split[1], Base64.DEFAULT);
+        } else {
+            bytes = Base64.decode(base64, Base64.DEFAULT);
+        }
+        Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
+        File parentFile = new File(FileUtils.getCacheDir(Utils.getApp()) + File.separator + "share");
+        if (!parentFile.exists()) {
+            parentFile.mkdirs();
+        }
+        String targetFileName = "IMG_" + new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date()) + ".png";
+        File file = new File(parentFile, targetFileName);
+        FileUtils.saveImageToGallery(bitmap, file.getAbsolutePath());
+        return new File(file.getAbsolutePath());
+    }
+
+    private static Message createImageMessage(File file, String targetId, Conversation.ConversationType conversationType) {
+        Uri uri = Uri.fromFile(file);
+        ImageMessage imageMessage = ImageMessage.obtain(uri, uri);
+        Message message = new Message();
+        message.setTargetId(targetId);
+        message.setContent(imageMessage);
+        message.setConversationType(conversationType);
+        return message;
+    }
+
+    public interface ResultCallBack {
+        void onResult(boolean isSuccess);
+    }
+}

+ 33 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/web/HtmlActivity.java

@@ -66,6 +66,7 @@ import com.cooleshow.teacher.bean.alipay.AuthResult;
 import com.cooleshow.teacher.bean.alipay.PayResult;
 import com.cooleshow.teacher.bean.weixinpay.WeixinPayInfo;
 import com.cooleshow.teacher.databinding.ActivityHtml1Binding;
+import com.cooleshow.teacher.helper.ShareHelper;
 import com.cooleshow.teacher.ui.live.TeacherLiveRoomActivity;
 import com.cooleshow.teacher.widgets.FileUtils;
 import com.cooleshow.teacher.widgets.LollipopFixedWebView;
@@ -644,6 +645,24 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
 
     @Override
     public void savePicture(String base64, String uuid) {
+        new RxPermissions(this)
+                .request(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .subscribe(permission -> {
+                    if (permission) {
+                        ShareHelper.saveImg(this, base64, new ShareHelper.ResultCallBack() {
+                            @Override
+                            public void onResult(boolean isSuccess) {
+                                if (isSuccess) {
+                                    sendCallBack("savePicture", uuid, "success");
+                                } else {
+                                    sendCallBack("savePicture", uuid, "error");
+                                }
+                            }
+                        });
+                    } else {
+                        DialogHelper.showTipDialog(this, "保存文件需要储存权限,去设置?");
+                    }
+                });
 
     }
 
@@ -1376,6 +1395,20 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
         }
     }
 
+    private void sendCallBack(String api, String uuid, Object o) {
+        JSONObject jsonObject = new JSONObject();
+        JSONObject contentJson = new JSONObject();
+        try {
+            jsonObject.put("api", api);
+            contentJson.put("status", o);
+            contentJson.put("uuid", uuid);
+            jsonObject.put("content", contentJson);
+            onSendMessage(jsonObject.toString());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
 }
 
 

+ 34 - 1
teacher/src/main/java/com/cooleshow/teacher/ui/web/HtmlHorizontalScreenActivity.java

@@ -55,6 +55,7 @@ import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.ToastUtils;
 import com.cooleshow.base.utils.UriUtils;
+import com.cooleshow.base.utils.helper.DialogHelper;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.base.utils.helper.upload.UploadHelper;
 import com.cooleshow.base.widgets.DialogUtil;
@@ -65,6 +66,7 @@ import com.cooleshow.teacher.bean.alipay.AuthResult;
 import com.cooleshow.teacher.bean.alipay.PayResult;
 import com.cooleshow.teacher.bean.weixinpay.WeixinPayInfo;
 import com.cooleshow.teacher.databinding.ActivityHtml1Binding;
+import com.cooleshow.teacher.helper.ShareHelper;
 import com.cooleshow.teacher.widgets.FileUtils;
 import com.cooleshow.teacher.widgets.LollipopFixedWebView;
 import com.cooleshow.teacher.widgets.helper.JsInterfaceUtils;
@@ -615,7 +617,24 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
 
     @Override
     public void savePicture(String base64, String uuid) {
-
+        new RxPermissions(this)
+                .request(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .subscribe(permission -> {
+                    if (permission) {
+                        ShareHelper.saveImg(this, base64, new ShareHelper.ResultCallBack() {
+                            @Override
+                            public void onResult(boolean isSuccess) {
+                                if (isSuccess) {
+                                    sendCallBack("savePicture", uuid, "success");
+                                } else {
+                                    sendCallBack("savePicture", uuid, "error");
+                                }
+                            }
+                        });
+                    } else {
+                        DialogHelper.showTipDialog(this, "保存文件需要储存权限,去设置?");
+                    }
+                });
     }
 
     private boolean goPay = false;
@@ -1319,4 +1338,18 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
             e.printStackTrace();
         }
     }
+
+    private void sendCallBack(String api, String uuid, Object o) {
+        JSONObject jsonObject = new JSONObject();
+        JSONObject contentJson = new JSONObject();
+        try {
+            jsonObject.put("api", api);
+            contentJson.put("status", o);
+            contentJson.put("uuid", uuid);
+            jsonObject.put("content", contentJson);
+            onSendMessage(jsonObject.toString());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
 }