AndroidアプリケーションでREAD_EXTERNAL_STORAGEへのアクセス許可をリクエストしようとしています。私の問題は、ダイアログが表示されないので、 "onRequestPermissionsResult"も決して呼び出されないということです。私がここで間違っていることは何ですか?私は、このリンクをたどっ:ここDeveloper Android許可ダイアログが表示されない
は私のコードです:
public class AccountActivity extends AppCompatActivity {
protected TextView changeProfileImgBtn;
private static final int SELECTED_PICTURE = 1;
private static final int F = 101;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_account);
changeProfileImgBtn = (TextView) findViewById(R.id.accountChangeProfileImgBtn);
changeProfileImgBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (ContextCompat.checkSelfPermission(AccountActivity.this,
Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(AccountActivity.this,
Manifest.permission.READ_EXTERNAL_STORAGE)) {
System.out.println("shouldShowRequestPermissionRationale");
} else {
ActivityCompat.requestPermissions(AccountActivity.this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
F);
System.out.println("REQUEST");
}
} else {
Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, SELECTED_PICTURE);
}
}
});
}
@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String permissions[], @NonNull int[] grantResults) {
System.out.println("onRequestPermissionsResult");
switch (requestCode) {
case F: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
System.out.println("GRANTED");
Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, SELECTED_PICTURE);
} else {
System.out.println("DENIED");
}
return;
}
// other 'case' lines to check for other
// permissions this app might request
}
}
}
あなたはログインActivityCompat.requestPermissions(...)で見ることができるように「REQUEST」が印刷されたと呼ばれています。 "shouldShowRequestPermissionRationale"は、実行中のデバイスに関係なく、決して印刷されません。 "onRequestPermissionsResult"も出力されません。
D/ViewRootImpl: ViewPostImeInputStage processPointer 0
D/ViewRootImpl: ViewPostImeInputStage processPointer 1
I/System.out: REQUEST
I/Timeline: Timeline: Activity_idle id: [email protected] time:106175669
私は私のマニフェストファイルでこれを含まれている:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
は非常に任意のヘルプを鑑賞。
:あなたはおそらく私自身のいずれかのように、いくつかのサードパーティのヘルパーコードを使用することができ、より簡単にするために
''要素は間違った場所にあります(https://commonsware.com/blog/2015/08/31/hey-where-did-my-permission-go.html)。 –
CommonsWare
これは、マニフェストタグの内側とアプリケーションタグの外側に配置されています。 –
graddのtarget sdkは何ですか? – Sanjeet