看了看之前貼出來的沒有動態申請權限的工具類,現在補上,裏面的權限改一改適合自己公司即可。
public class Authority {
private static final int MY_PERMISSION_REQUEST_CODE = 10000;
//申請的權限,字符串模式
public static final String CALL_PHONE = Manifest.permission.CALL_PHONE;//打電話權限
public static final String CAMERA = Manifest.permission.CAMERA;//相機攝像頭權限
public static final String READ_EXTERNAL_STORAGE = Manifest.permission.READ_EXTERNAL_STORAGE;//讀取內存卡權限
public static final String WRITE_EXTERNAL_STORAGE = Manifest.permission.WRITE_EXTERNAL_STORAGE;//寫入內存卡權限
//申請的權限,數組模式
public static final String[] CALL_PHONE_ARR = {Manifest.permission.CALL_PHONE};//打電話權限
public static final String[] CAMERA_ARR = {Manifest.permission.CAMERA};//相機攝像頭權限
public static final String[] READ_EXTERNAL_STORAGE_ARR = {Manifest.permission.READ_EXTERNAL_STORAGE};//讀取內存卡權限
public static final String[] WRITE_EXTERNAL_STORAGE_ARR = {Manifest.permission.WRITE_EXTERNAL_STORAGE};//寫入內存卡權限
//權限數組
public static final String[] str = {
Manifest.permission.CALL_PHONE,//打電話
Manifest.permission.CAMERA, //相機
// Manifest.permission.ACCESS_NETWORK_STATE,//網絡
// Manifest.permission.ACCESS_WIFI_STATE,//wifi
// Manifest.permission.CHANGE_WIFI_STATE,//wifi
// Manifest.permission.INTERNET,//網絡
Manifest.permission.READ_EXTERNAL_STORAGE,//獲取sd
Manifest.permission.WRITE_EXTERNAL_STORAGE//寫入sd
};
//申請權限,多項申請(Activity)
public static void CallMobile(Activity mContext) {
ActivityCompat.requestPermissions(
mContext,
str,
MY_PERMISSION_REQUEST_CODE//回調的標識
);
}
//申請權限,單項權限,(Activity)
public static void CallMobileArr(Activity mContext, String[] str) {
ActivityCompat.requestPermissions(
mContext,
str,
MY_PERMISSION_REQUEST_CODE//回調的標識
);
}
//申請權限(fragment)
// requestPermissions(Authority.CAMERA_ARR, 10000);這種模式,不可以顯示申請權限彈框.如果禁止所申請的權限,可以顯示自定義彈框
//下面這種模式:可以顯示申請權限彈框.如果禁止所申請的權限,並且“下次不會再次提醒”已勾選,不會顯示彈框
@TargetApi(Build.VERSION_CODES.M)
public static void CallMobileFragment(Activity mContext, String[] str) {
mContext.requestPermissions(str, MY_PERMISSION_REQUEST_CODE);
}
//判斷權限是否申請通過
public static boolean lacksPermission(Context mContexts, String permission) {
return ContextCompat.checkSelfPermission(mContexts, permission) ==
PackageManager.PERMISSION_DENIED;
}
/**
* @param s 提示語
* @param applicationContext 上下文
* @param type 類型,是否關閉頁面 1關閉,0不關閉
*/
public static void openAppDetails(String s, final Activity applicationContext, final int type) {
final android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(applicationContext);
builder.setMessage(s);
builder.setCancelable(false);
builder.setPositiveButton("去手動授權", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setData(Uri.parse("package:" + applicationContext.getPackageName()));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
applicationContext.startActivity(intent);
if (type == 1) {
applicationContext.finish();
}
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
if (type == 1) {
applicationContext.finish();
}
}
});
builder.show();
}
//設置popu背景色
public static void setBackgroundAlpha(float bgAlpha, Activity mContext) {
WindowManager.LayoutParams lp = mContext.getWindow()
.getAttributes();
lp.alpha = bgAlpha;
mContext.getWindow().setAttributes(lp);
}
}