1
我正在尝试请求我的启动程序活动权限。对于API < 23,它完美。但是,当我在运行API 23的设备上测试应用程序时,它会显示:“PostPaid Balance已停止。”我点击“关闭应用程序按钮”,应用程序关闭,并立即要求一个许可。我接受了。然后我点击应用程序图标重新打开,同样的事情发生,除了现在它要求下一个权限。然后点击应用程序图标,这一次正确执行。 它似乎是一次要求一个权限。有关如何去做这件事的任何想法?Android API 23请求多个权限
// Below code is implemented on onCreate() of the launcher activity.
if (Build.VERSION.SDK_INT < 23) {
ActivityCompat.checkSelfPermission(this.getApplicationContext(), "android.permission.READ_SMS");
ActivityCompat.checkSelfPermission(this.getApplicationContext(), Manifest.permission.READ_CALL_LOG);
ActivityCompat.checkSelfPermission(this.getApplicationContext(), Manifest.permission.READ_PHONE_STATE);
if ((ActivityCompat.checkSelfPermission(this, "android.permission.READ_SMS") != PackageManager.PERMISSION_GRANTED)) {
requestSmsPermission();
}
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
requestPhoneStatePermission();
}
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CALL_LOG) != PackageManager.PERMISSION_GRANTED) {
requestCallLogPermission();
}
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if ((this.checkSelfPermission("android.permission.READ_SMS") != PackageManager.PERMISSION_GRANTED) &&
(this.checkSelfPermission(Manifest.permission.READ_CALL_LOG) != PackageManager.PERMISSION_GRANTED) &&
(this.checkSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED)) {
this.requestPermissions(new String[]{"android.permission.READ_SMS", Manifest.permission_group.PHONE}, REQUEST_SMS);
}
}
请求是在单个'requestPermissions所有三种权限()'调用。此外,还不清楚为什么您的代码基于API级别设置为执行不同的操作。 'ActivityCompat'和'ContextCompat'是向后兼容的。 – CommonsWare
我设置的代码做不同的事情,因为某些功能不可用于API <23 –
您会推荐什么?如果API是23并且不理会if(API <23),我应该只要求权限? –