答非所问
答非所问
  • 发布:2017-05-12 11:48
  • 更新:2019-01-16 00:35
  • 阅读:6106

android离线打包6.0以上的权限动态申请

分类:5+ SDK

页面调用

// 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 动态权限申请代码  ↑↑↑↑↑↑↑↑
写的比较粗糙,还望大神指导!
3 关注 分享
4***@qq.com b***@163.com Lspring

要回复文章请先登录注册

DCloud_heavensoft

DCloud_heavensoft

https://ask.dcloud.net.cn/article/35091 这里有Native.js的版本
2019-01-16 00:35
答非所问

答非所问 (作者)

回复 1***@qq.com :
R.array.permission :
<string-array name="permissions">
<item>@string/permission_recode_audio_hint</item>
<item>@string/permission_get_accounts_hint</item>
<item>@string/permission_read_phone_hint</item>
<item>@string/permission_call_phone_hint</item>
<item>@string/permission_camera_hint</item>
<item>@string/permission_access_fine_location_hint</item>
<item>@string/permission_access_coarse_location_hint</item>
<item>@string/permission_read_external_hint</item>
<item>@string/permission_white_external_hint</item>
</string-array>
-------------------------------------------------------
strings文件:
<string name="permission_get_accounts_hint">没有此权限,无法开启这个功能,请开启权限。PERMISSION_GET_ACCOUNTS</string>
<string name="permission_read_phone_hint">没有此权限,无法开启这个功能,请开启权限。PERMISSION_READ_PHONE_STATE</string>
<string name="permission_call_phone_hint">没有此权限,无法开启这个功能,请开启权限。PERMISSION_CALL_PHONE</string>
<string name="permission_camera_hint">没有此权限,无法开启这个功能,请开启权限。PERMISSION_CAMERA</string>
<string name="permission_access_fine_location_hint">没有此权限,无法开启这个功能,请开启权限。PERMISSION_ACCESS_FINE_LOCATION</string>
<string name="permission_access_coarse_location_hint">没有此权限,无法开启这个功能,请开启权限。PERMISSION_ACCESS_COARSE_LOCATION</string>
<string name="permission_read_external_hint">没有此权限,无法开启这个功能,请开启权限。PERMISSION_READ_EXTERNAL_STORAGE</string>
<string name="permission_white_external_hint">没有此权限,无法开启这个功能,请开启权限。PERMISSION_WRITE_EXTERNAL_STORAGE</string>
<string name="permission_recode_audio_hint">没有此权限,无法开启这个功能,请开启权限。PERMISSION_RECORD_AUDIO</string>
2017-10-30 13:46
1***@qq.com

1***@qq.com

能提供下R.array.permission吗,不胜感激
2017-10-27 16:32
鹰击长空169

鹰击长空169

回复 答非所问 :
谢谢
2017-06-14 16:49
答非所问

答非所问 (作者)

回复 鹰击长空169 :
http://pan.baidu.com/s/1qYbh9Uk
2017-06-06 15:06
答非所问

答非所问 (作者)

http://pan.baidu.com/s/1qYbh9Uk
android的代码上传了
2017-06-05 16:22
鹰击长空169

鹰击长空169

能不能提供源码参考一下
2017-06-01 14:35