[解決済み] Android 6.0 マルチパーミッション
2022-04-20 15:12:44
質問
Android 6.0には新しいパーミッションがあり、次のようなもので呼び出せることは知っています。
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) !=
PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[] {
Manifest.permission.WRITE_EXTERNAL_STORAGE
}, PERMISSION_WRITE_STORAGE);
}
今日、連絡先、SMS、カメラの3つのパーミッションを必要とするGoogleアプリを見ました。それは1-3ページを作り、それらを同時に呼び出して有効化しているのです。
誰か、SMS、カメラ、連絡先、ストレージのような4つの権限を同時に呼び出して有効にする方法を教えてください。
例(googleアプリの名前を忘れてしまった :( )
このアプリには、SMS、連絡先、カメラが必要です。
アプリは私に(そしてダイアログ1-3ページを作りました)SMSの有効化、連絡先の有効化、そしてカメラの有効化を求めました。 このGoogleアプリは3つの必要な権限を一緒に呼び出していたので、私の質問は、私は同じことを達成することができますどのようにですか?
解決方法を教えてください。
4つのパーミッションすべてを
ActivityCompat.requestPermissions(...)
を呼び出すと、Androidはあなたが言ったように自動的にそれらをまとめてページングします。
複数のパーミッションをチェックし、どれかが許可されていないことを確認するヘルパーメソッドを用意しています。
public static boolean hasPermissions(Context context, String... permissions) {
if (context != null && permissions != null) {
for (String permission : permissions) {
if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
}
return true;
}
あるいはKotlinで。
fun hasPermissions(context: Context, vararg permissions: String): Boolean = permissions.all {
ActivityCompat.checkSelfPermission(context, it) == PackageManager.PERMISSION_GRANTED
}
そして、すべてのパーミッションを送信するだけです。 Androidは必要なものだけを要求してきます。
// The request code used in ActivityCompat.requestPermissions()
// and returned in the Activity's onRequestPermissionsResult()
int PERMISSION_ALL = 1;
String[] PERMISSIONS = {
android.Manifest.permission.READ_CONTACTS,
android.Manifest.permission.WRITE_CONTACTS,
android.Manifest.permission.WRITE_EXTERNAL_STORAGE,
android.Manifest.permission.READ_SMS,
android.Manifest.permission.CAMERA
};
if (!hasPermissions(this, PERMISSIONS)) {
ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
}
関連
-
javaの実行中に「javaの例外が発生しました」と表示された場合はどうすればよいですか?
-
Eclipseで "XXXX "の解決策を(型に)解決することができない
-
JSPで「リストが型解決できない!」の解決方法
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] ssh "パーミッションが開きすぎています "エラー
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] フォルダとそのサブフォルダ/ファイルのパーミッションを一括で変更する方法
-
[解決済み] Android 6.0 Marshmallow (API 23) で getColor(int id) が非推奨になりました。
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
IllegalArgumentException この例外を解決する方法
-
[解決済み] フラグメントとアクティビティの両方で定義されている場合、フラグメントで onRequestPermissionsResult が呼び出されない。
-
JQuery DataTable 详解
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 0 at One1.main(One1.java:3)
-
spring-boot 401 このリソースにアクセスするには完全な認証が必要です エラー解決
-
javaコンパイル時のエラー:不正な文字 '\ufeff' に対する解決策です。
-
アイデア Springboot Web プロジェクトを jar にパッケージ化する場合、Error: 無効または破損した jarfile x.jar 解決策
-
javaでよく使われる英単語
-
Exception: java.util.NoSuchElementException: 行が見つかりません
-
[解決済み] Android marshmallowのリクエスト許可?