java - 为什么再次打开应用程序时权限对话框会消失?

标签 java android android-permissions

我已在我的项目中添加了 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 行为

如果单独任务中已存在 Activity 的实例,系统将通过调用其 onNewIntent() 方法将 Intent 路由到现有实例,而不是创建新实例。

https://developer.android.com/guide/components/activities/tasks-and-back-stack#TaskLaunchModes

我能够通过处理

中的代码来解决这个问题

onNewIntent( Intent Intent )

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    askForPermission(this, Manifest.permission.READ_PHONE_STATE, REQUEST_CODE_FOR_PERMISSION);
}

关于java - 为什么再次打开应用程序时权限对话框会消失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50874406/

相关文章:

java - 我的 Java 方法不打印任何内容 - 打印数字的所有可能子集而不重复

android - 使用 Mockito 1.9.5 和 DexMaker-Mockito-1.0 的验证错误

android - ArcGIS 在 android 中使用 GeometryServer 创建缓冲区

java - 当我按下按钮时应用程序强制关闭?安卓

android - uses-permission android :name="android. permission.WAKE_LOCK权限问题

java - hadoop java.io.IOException : while running namenode -format on OSX 错误

java - 如何在 Eclipse 中按文本顺序查看方法,以便在编辑器中导航?

android - 由 : java. lang.SecurityException :android. permission.READ_PHONE_STATE 引起

Android 12 未显示正确的权限请求屏幕

java - Visual Studio代码: Java code does not run at all