1.スプラッシュアクティビティ
@オーバーライド
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Build.VERSION.SDK_INT >= 23) {//6.0 は動的パーミッションのみを使用します
initPermission();
}
}
-------------------------------------------------- ------------------
//録画とファイルの読み書きの2つの権限を申請する
//1、最初に配列権限を宣言し、必要なすべての権限をその配列に入れます
文字列[]権限=新しい文字列[]{Manifest.permission.RECORD_AUDIO、
Manifest.permission.READ_EXTERNAL_STORAGE};
//2. mPermissionList を作成し、付与されていない権限を 1 つずつ特定し、付与されていない権限を mPerrmissionList に格納します。
List<String> mPermissionList = new ArrayList<>();
private final int mRequestCode = 100;//許可リクエスト コード
// 許可判定と申請
プライベートボイドinitPermission() {
mPermissionList.clear();//渡されなかった権限をクリアする
// 必要なアクセス許可が 1 つずつ渡されているかどうかを判断します
for (int i = 0; i < permissions.length; i++) {
if (ContextCompat.checkSelfPermission(this, permissions[i]) != PackageManager.PERMISSION_GRANTED) {
mPermissionList.add(permissions[i]);//付与されていない権限を追加
}
}
//アクセスのリクエスト
if (mPermissionList.size() > 0) {//渡されていない権限があり、適用する必要があります
ActivityCompat.requestPermissions(これ、権限、mRequestCode);
}それ以外{
// 権限が渡されたことを示します
}
}
//パーミッション要求後のコールバックメソッド
//Parameters: requestCode は、当社が定義したパーミッション リクエスト コードです。
//Parameters: permissions は、リクエストしたパーミッション名の配列です
//パラメータ: grantResults は、ページのポップアップ後に権限を許可するかどうかを示す識別子の配列です. 配列の長さは、権限名配列の長さに対応します. 配列内のデータは、権限を許可する場合は 0、-1 です。許可を禁止するためにクリックしたことを示すため
@オーバーライド
public void onRequestPermissionsResult(int requestCode, @NonNull String[] パーミッション,
@NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
boolean hasPermissionDismiss = false;// 権限はありますが失敗しました
if (mRequestCode == requestCode) {
for (int i = 0; i < grantResults.length; i++) {
if (grantResults[i] == -1) {
hasPermissionDismiss = true;
}
}
//パーミッションが許可されていない場合
if (hasPermissionDismiss) {
showPermissionDialog();//システム設定の許可ページにジャンプするか、ページを直接閉じて、彼が引き続きアクセスできないようにする
}それ以外{
//すべての権限が渡され、次のステップに進みます
}
}
}
-------------------------------------------------- ------------------
プライベートボイドshowPermissionDialog(){
AlertDialog.Builder ビルダー = new AlertDialog.Builder(SplashActivity.this);
builder.setTitle("権限設定");
builder.setMessage("パーミッションを有効にしますか?");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@オーバーライド
public void onClick(DialogInterface dialog, int which) {
goIntentSetting();
終了();
}
});
builder.setNeutralButton("取消", new DialogInterface.OnClickListener() {
@オーバーライド
public void onClick(DialogInterface dialog, int which) {
終了();
}
});
builder.show();
}
-------------------------------------------------- ------------------
プライベートボイドgoIntentSetting(){
インテント インテント = 新しいインテント(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("パッケージ", SplashActivity.this.getPackageName(), null);
インテント.setData(uri);
試す {
SplashActivity.this.startActivity(意図);
キャッチ(例外e){
e.printStackTrace();
}
}