页面调用
// android6.0以上权限申请
function requestAndroidPremission(requestCode, func){
if(!permissionUtils){
permissionUtils = plus.android.newObject("com.build.canteen.util.PermissionUtils");
}
requestAndroidPremissionCallBack = function(requestCode){
if(typeof func == 'function'){
func(requestCode);
}
}
// 实现原生接口com.build.canteen.util.PermissionUtils.RequestWebViewPremissionListener对象
var hevent = plus.android.implements( "com.build.canteen.util.PermissionUtils$RequestWebViewPremissionListener", {
"requestPremissionCallBack":function(requestCode){
requestAndroidPremissionCallBack(requestCode)
// console.log( "Invoked Object’s name: "+name ); // 输出“Invoked Object’s name: Tester”
}
});
plus.android.invoke(permissionUtils,'setRequestWebViewPremissionListener',hevent);
plus.android.invoke(permissionUtils,"requestWebViewPremission",requestCode,'requestAndroidPremissionCallBack');
}
android原生代码片段:
// mui 动态权限申请代码 ↓↓↓↓↓↓↓↓↓↓↓↓
//底层隐藏的自定义Activity,重写onRequestPermissionsResult
private static MainActivity mActivity;
//由webview中的js实现此接口,用于权限申请完成后的回调webview的js函数
private RequestWebViewPremissionListener requestWebViewPremissionListener;
public static void setMainActivity(MainActivity aty){
mActivity = aty;
}
public void setRequestWebViewPremissionListener(RequestWebViewPremissionListener requestWebViewPremissionListener){
this.requestWebViewPremissionListener = requestWebViewPremissionListener;
}
public interface RequestWebViewPremissionListener{
void requestPremissionCallBack(int requestCode);
}
//mui调用此方法申请权限
public void requestWebViewPremission(int requestCode){
if(mActivity != null && Build.VERSION.SDK_INT >= 23){
//在Activity中的onRequestPermissionsResult方法被调用
PermissionGrant permissionGrant = new PermissionUtils.PermissionGrant() {
@Override
public void onPermissionGranted(int requestCode) {
if(requestWebViewPremissionListener!=null){
requestWebViewPremissionListener.requestPremissionCallBack(requestCode);
}
}
};
mActivity.setPermissionGrant(permissionGrant);
//安卓原生实现的权限申请
requestPermission(mActivity,requestCode,permissionGrant);
}else if(Build.VERSION.SDK_INT < 23){
if(requestWebViewPremissionListener!=null){
requestWebViewPremissionListener.requestPremissionCallBack(requestCode);
}
}else{
Log.w(TAG,"WebView requestWebViewPremission error ,安卓运行版本:"+Build.VERSION.SDK_INT);
}
}
// mui 动态权限申请代码 ↑↑↑↑↑↑↑↑
写的比较粗糙,还望大神指导!
7 个评论
要回复文章请先登录或注册
DCloud_heavensoft
答非所问 (作者)
1***@qq.com
鹰击长空169
答非所问 (作者)
答非所问 (作者)
鹰击长空169