私は食品配達のためのアプリを作っています。私のアプリでは、ユーザーがアンドロイドのスマートフォン版のマシュマロウを使用しているときに、私のアプリはSMSの読み取りの許可のために初めて尋ねません。しかし、ユーザーが次回にアプリケーションを開くとき、私のアプリは許可を求めます。私は何が問題なのか分からない。私は、ユーザーが最初にアクセス許可を求める必要がありますアプリケーションを開くときにそれをしたい。代わりに2回目。私のアプリmarshmallowのランタイムアクセス権について初めて質問しませんか?
は、これは私が私の活動の私onCreate()
方法では、このメソッドを呼び出しています許可を尋ねるための私の方法です:
private void permissionForMarshMallow() {
int permissionCheck = ContextCompat.checkSelfPermission(LoginActivity.this,
Manifest.permission.READ_SMS);
if (ContextCompat.checkSelfPermission(LoginActivity.this,
Manifest.permission.READ_SMS)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(LoginActivity.this,
Manifest.permission.READ_SMS)) {
Log.e("permission...granted", "permission granted............");
} else {
ActivityCompat.requestPermissions(LoginActivity.this,
new String[]{Manifest.permission.READ_SMS},
REQUEST_CODE_ASK_SINGLE_PERMISSION);
}
}
}
を、これはオーバーライドメソッドonRequestPermissionsResult()
です:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_ASK_SINGLE_PERMISSION:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
} else {
// Toast.makeText(LoginActivity.this, "Permission Denied", Toast.LENGTH_SHORT).show();
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
は誰もが言うことができます私はそれが二回目ではなく、最初に許可を求めるアプリを作る方法はありますか?
「 '' targetSdkVersion'''は何ですか? –
ターゲットバージョンが22 –
かどうかを確認してください。私はこの読書をお勧めします:https://inthecheesefactory.com/blog/things-you-need-to-know-about-android-m-permission-developer-edition/en助けてください。 –