权限验证

android权限验证插件(cordova)
This commit is contained in:
liujingdong 2017-11-08 11:00:06 +08:00
commit 7f7969a0c0
5 changed files with 167 additions and 0 deletions

12
README.md Normal file
View 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
View 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
View 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>

View 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
View 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);
}
}