mirror of
https://github.com/liujingdong/cordovaAddPermissions.git
synced 2024-10-06 00:52:08 +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