android 6.0以後,權限的管理方法就不僅局限于androidManifest.xml了,APK 如果需要權限,必須要在代碼裡實作權限的申請。
下面是實時檢視權限的許可情況和實時撤銷權限許可的指令(不用每次都去: 設定->應用->xxx應用->應用資訊->權限->權限清單,修改權限的許可)的方法
- Use the adb tool to manage permissions from the command line:
- List permissions and status by group: 這個隻是列出裝置的所有的危險權限,并沒有指令來顯示某個應用的權限的許可情況(這點不好)
$ adb shell pm list permissions -d -g
- Grant or revoke one or more permissions:
$ adb shell pm [grant|revoke] <permission-name> ...
- List permissions and status by group: 這個隻是列出裝置的所有的危險權限,并沒有指令來顯示某個應用的權限的許可情況(這點不好)
- Analyze your app for services that use permissions.
檢視内部SD權限的讀取權限
group:android.permission-group.STORAGE
permission:android.permission.READ_EXTERNAL_STORAGE
permission:android.permission.WRITE_EXTERNAL_STORAGE
權限的申請判斷代碼如下:
/***
group:android.permission-group.STORAGE
permission:android.permission.READ_EXTERNAL_STORAGE
permission:android.permission.WRITE_EXTERNAL_STORAGE
***/
private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE };
private boolean verifyStoragePermissions(Activity activity) {
if(Util.SDK_INT < 23) /*******below android 6.0*******/
{
return true;
}
// Check if we have write permission
int permission = ActivityCompat.checkSelfPermission(activity,
Manifest.permission.READ_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED) {
// We don't have permission so prompt the user
ActivityCompat.requestPermissions(activity,PERMISSIONS_STORAGE,
REQUEST_EXTERNAL_STORAGE);
return false;
}
else
{
return true;
}
}
如果verifyStoragePermissions 傳回時false,那麼需要實作權限的申請處理,實作onRequestPermissionResult
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_EXTERNAL_STORAGE: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
/×××do request function(into apk)×××××/
} else {
Toast.makeText(getApplicationContext(),
"storage permission denied,it will exit apk",
Toast.LENGTH_LONG).show();
/×××do request function(exitapk)×××××/
finish();
}
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
break;
}
}
}
如果verifyStoragePermissions傳回true則直接進入APK或Activity.
其他的應用可以參考如下連結:
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/1110/3670.html
http://www.jianshu.com/p/a51593817825
http://blog.csdn.net/lmj623565791/article/details/50709663
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/1110/3670.html
http://blog.csdn.net/yangqingqo/article/details/48371123/