java - 为什么再次打开应用程序时权限对话框消失?
问题描述
我在我的项目中添加了 READ_PHONE_STATE 权限。
场景:我刚刚打开我的应用程序,我收到权限警报“允许我的应用程序拨打和管理电话?” 现在我正在后台移动我的应用程序,然后通过点击我的应用程序图标再次打开结果:“允许我的应用程序进行并管理电话?” 权限弹出获取消失。
任何人都可以告诉为什么这种行为?注意:我正在使用 launchMode="singleInstance" 并且在使用 launchMode="standard" 时一切正常。
分享我的代码:
<?xml version="1.0" encoding="utf-8"?>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity" android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
public class MainActivity extends AppCompatActivity {
public static final Integer REQUEST_CODE_FOR_PERMISSION = 0x1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
askForPermission(this, Manifest.permission.READ_PHONE_STATE, REQUEST_CODE_FOR_PERMISSION);
}
public static void askForPermission(Activity context, String permission, Integer requestCode) {
if ((Build.VERSION.SDK_INT >= 23) && (context != null) && (TextUtils.isEmpty(permission) == false)) {
ActivityCompat.requestPermissions(context, new String[]{permission}, requestCode);
}
}}
解决方案
基于 singleTask 行为
如果活动的实例已经存在于单独的任务中,系统将通过调用其 onNewIntent() 方法将意图路由到现有实例,而不是创建新实例。
https://developer.android.com/guide/components/activities/tasks-and-back-stack#TaskLaunchModes
我能够通过处理代码来解决这个问题
onNewIntent(意图意图)
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
askForPermission(this, Manifest.permission.READ_PHONE_STATE, REQUEST_CODE_FOR_PERMISSION);
}
推荐阅读
- swift - Swift 中的闭包
- python - 将日期从 Excel 导入 Microsoft SQL Server Management Studio
- java - 没有注释的Spring @Value
- python - Python中的制表模块未提供所需的输出
- ruby-on-rails - 无法使用设计启用 google oauth2
- r - 在 R ggplot2 中制作戒指
- spring-boot - 使用 simple-json-datasource 为 Grafana 调用 Springboot REST API
- javascript - 如何在vuejs的内部循环中从点击事件传递数据
- nginx - 使用 Nginx 的 Canary 部署 - 流量未路由到 Canary 服务器
- ruby-on-rails - 如何选择尚未保存在 Rails 中的关联记录?