2017-06-18 4 views

答えて

0

以下のように許可を求めると、許可を求めるダイアログが開きます。チェックボックスをオンにすると、OSはそれ以上許可を求めません。

if (ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { 
    if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE)) { 
     } else { 
      ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, RC_WRITE_EXTERNAL_STORAGE); 
     } 
} 
1

いいえ、申し訳ありません。ユーザーに許可を求められたかどうかを追跡し、その情報を使用して今後質問するかどうかを判断する必要があります。

+0

私はこのアイデアを明確に破棄し、回避策を開始することができます。 – arunwithasmile

+0

@arunwithasmile: "すべての情報源?" - 存在しないものについては、私はあなたにドキュメンテーションを表示することはできません。 – CommonsWare

+0

はい、そうです。私はまあちょっと期待しました:) – arunwithasmile

1

プログラムが「必然的に」アクセス許可を必要としない場合は、SharedPreferencesを使用して、trueというブール値でfirstTimeという変数を格納できます。 次に、その変数のonCreateメソッドをチェックインします。それが真であれば、許可を求め、値をfalseに設定して保存します。ユーザーがアプリケーションを再実行すると、「FirstTime」にはなりません。そのため、アクセス権の入力を求められません。

SharedPreferences pref = this.getSharedPreferences("PACKAGE.NAME",MODE_PRIVATE); 
Boolean firstTime = pref.getBoolean("firstTime",true); 
if(firstTime){ 
//Ask for permissions here 
pref.edit().putBoolean("firstTime",false).apply(); 
} 
+0

私はこのアイデアを持っていましたが、ユーザはダイアログボックスのチェックボックスをチェックしてOSに知らせることができるので、プログラムでそのパラメータを渡すオプションがあるかどうかは疑問でした。 – arunwithasmile

関連する問題