mirror of
https://github.com/liujingdong/cordovaAddPermissions.git
synced 2024-10-06 09:12:10 +08:00
权限验证
android权限验证插件(cordova)
This commit is contained in:
commit
7f7969a0c0
12
README.md
Normal file
12
README.md
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
title: android6.0动态权限验证
|
||||||
|
description: android6.0以上权限验证的cordova插件
|
||||||
|
Installation: ionic plugin add https://github.com/liujingdong/cordovaAddPermissions.git
|
||||||
|
Supported Platforms: android
|
||||||
|
deleting:
|
||||||
|
var perArr = ["android.permission.WRITE_EXTERNAL_STORAGE","android.permission.RECORD_AUDIO","android.permission.CAMERA"]
|
||||||
|
PermissionsPlugin.addPermissions("权限",onPermissionsSuccess,onPermissionsFail,perArr);
|
||||||
|
onPermissionsSuccess:成功回调方法
|
||||||
|
onPermissionsFail:失败回调方法
|
||||||
|
---
|
||||||
|
|
21
package.json
Normal file
21
package.json
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"name": "crazy-dong-plugin-permissions",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "scan_qr",
|
||||||
|
"cordova": {
|
||||||
|
"id":"org.cordova.PermissionsPlugin",
|
||||||
|
"platforms": [
|
||||||
|
"android"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/liujingdong/cordovaAddPermissions.git"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"ecosystem:cordova",
|
||||||
|
"cordova-android"
|
||||||
|
],
|
||||||
|
"author": "liujingdong",
|
||||||
|
"license": "ISC"
|
||||||
|
}
|
23
plugin.xml
Normal file
23
plugin.xml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<plugin id="org.cordova.PermissionsPlugin" version="0.0.1"
|
||||||
|
xmlns="http://apache.org/cordova/ns/plugins/1.0"
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<name>PermissionsPlugin</name>
|
||||||
|
<description>android6.0以上添加权限</description>
|
||||||
|
|
||||||
|
<js-module name="PermissionsPlugin" src="www/PermissionsPlugin.js">
|
||||||
|
<clobbers target="PermissionsPlugin"/>
|
||||||
|
</js-module>
|
||||||
|
|
||||||
|
|
||||||
|
<platform name="android">
|
||||||
|
<config-file parent="/*" target="res/xml/config.xml">
|
||||||
|
<feature name="PermissionsPlugin">
|
||||||
|
<param name="android-package" value="custom.cordova.permissions.PermissionsPlugin" />
|
||||||
|
<param name="onload" value="true" />
|
||||||
|
</feature>
|
||||||
|
</config-file>
|
||||||
|
|
||||||
|
<source-file src="src/android/PermissionsPlugin.java" target-dir="src/org/apache/cordova/addpermissions"/>
|
||||||
|
</platform>
|
||||||
|
</plugin>
|
97
src/android/PermissionsPlugin.java
Normal file
97
src/android/PermissionsPlugin.java
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
package custom.cordova.permissions;
|
||||||
|
|
||||||
|
import android.Manifest;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
import android.os.Build;
|
||||||
|
import android.support.v4.app.ActivityCompat;
|
||||||
|
import android.support.v4.content.ContextCompat;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import org.apache.cordova.CallbackContext;
|
||||||
|
import org.apache.cordova.CordovaPlugin;
|
||||||
|
import org.json.JSONArray;
|
||||||
|
import org.json.JSONException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by CrazyDong on 2017/11/2.
|
||||||
|
*android6.0以上添加权限插件
|
||||||
|
*/
|
||||||
|
public class PermissionsPlugin extends CordovaPlugin {
|
||||||
|
private CallbackContext mCallbackContext;
|
||||||
|
private int requestCode = 201711;
|
||||||
|
@Override
|
||||||
|
public boolean execute(String action, JSONArray args, CallbackContext callbackContext)
|
||||||
|
throws JSONException {
|
||||||
|
mCallbackContext = callbackContext;
|
||||||
|
if(action.equals("权限")){
|
||||||
|
String preArr[] = new String[args.length()];
|
||||||
|
for (int i = 0; i < args.length(); i++) {
|
||||||
|
preArr[i] = args.getString(i);
|
||||||
|
}
|
||||||
|
// checkPermission(Manifest.permission.CAMERA,Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||||
|
checkPermission(preArr);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检测权限
|
||||||
|
*/
|
||||||
|
public void checkPermission(String... permission) {
|
||||||
|
if (hasGrantedPermission(permission)) {
|
||||||
|
mCallbackContext.success("permission allow");
|
||||||
|
} else {
|
||||||
|
requestPermission(permission);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否已获得传入的权限
|
||||||
|
*/
|
||||||
|
private boolean hasGrantedPermission(String... permission) {
|
||||||
|
if (Build.VERSION.SDK_INT > 22) {
|
||||||
|
for (String per : permission) {
|
||||||
|
boolean hasPers = ContextCompat.checkSelfPermission(
|
||||||
|
cordova.getActivity(), per) == PackageManager.PERMISSION_GRANTED;
|
||||||
|
|
||||||
|
if (!hasPers) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 申请权限
|
||||||
|
*/
|
||||||
|
private void requestPermission(String... permission) {
|
||||||
|
|
||||||
|
if (permission == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String[] perms = new String[permission.length];
|
||||||
|
for (int i = 0; i < permission.length; i++) {
|
||||||
|
perms[i] = permission[i];
|
||||||
|
}
|
||||||
|
ActivityCompat.requestPermissions(cordova.getActivity(), perms, requestCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*用户操作后回调*/
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRequestPermissionResult(int requestCode, String[] permissions, int[] grantResults) throws JSONException {
|
||||||
|
super.onRequestPermissionResult(requestCode, permissions, grantResults);
|
||||||
|
if(grantResults[0] == PackageManager.PERMISSION_GRANTED){
|
||||||
|
//用户允许
|
||||||
|
}else {
|
||||||
|
Toast.makeText(cordova.getActivity(),"您已决绝",Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
14
www/PermissionsPlugin.js
Normal file
14
www/PermissionsPlugin.js
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/**
|
||||||
|
* Created by CrazyDong on 2017/11/2.
|
||||||
|
*/
|
||||||
|
var exec = require('cordova/exec');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
/*调用对比
|
||||||
|
* js: cordova.exec(callbackContext.success, callbackContext.error, PluginName, action, args);
|
||||||
|
* java: public boolean execute(String action, JSONArray args, CallbackContext callbackContext)
|
||||||
|
* */
|
||||||
|
addPermissions:function(action,success,err,args){
|
||||||
|
exec(success,err, "PermissionsPlugin", action, args);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user