Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android startActivities意向订单_Android_Android Intent - Fatal编程技术网

Android startActivities意向订单

Android startActivities意向订单,android,android-intent,Android,Android Intent,我的应用程序需要在应用程序的设置屏幕上将对话活动显示为覆盖。这就是为什么应用程序需要同时启动多个活动 为此,我使用了startActivities方法 Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); Uri uri = Uri.fromParts("package", mContext.getPackageName(), null); intent.setData(uri)

我的应用程序需要在应用程序的设置屏幕上将对话活动显示为覆盖。这就是为什么应用程序需要同时启动多个活动

为此,我使用了startActivities方法

    Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
    Uri uri = Uri.fromParts("package", mContext.getPackageName(), null);
    intent.setData(uri);

    Bundle bundle = new Bundle();
    bundle.putString("SettingsItems", "Items");

    Intent i = new Intent(mContext, AutoStartSettingsActivity.class);
    i.putExtras(bundle);

    Intent[] intents = new Intent[2];
    intents[0] = intent;
    intents[1] = i;

    startActivities(intents);
但它总是先启动AutoStart设置活动活动(在我的应用程序中),然后启动应用程序设置屏幕。这就是设置屏幕覆盖对话框活动的原因,而对话框活动则相反

我确实尝试更改意图顺序,但失败:

 Intent[] intents = new Intent[2];
 intents[0] = i; 
 intents[1] = intent;

因此,问题是在startActivities意向数组中应该应用什么意向顺序,以便对话活动可以显示在应用程序设置屏幕上。

要启动deep,请尝试逐个启动您的活动

Intent a = new Intent(this, SettingsActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(a);

Intent b = new Intent(this, DialogActivity.class);
startActivity(b);

这样,您可以同时启动活动a和b,禁止转换到SettingsActivity,并获得从当前活动到DialogActivity的单个转换。

为了保证活动启动的顺序,我将执行以下操作:

  • 启动
    SettingsActivity
  • 在应用程序中调用
    onPause()
    时,启动对话框
    AutoStartSettingsActivity

如果这不起作用,您可能需要在启动此设置中的
AutoStartSettingsActivity

之前增加一些延迟。此设置中的活动也覆盖了DialogActivity(这很少见,即90%的工作时间仍然存在问题),为了确保这项工作正常,您需要监视设置活动何时显示,然后启动对话框活动。使用可访问性服务可以做到这一点,但对于您的问题来说,这完全是小题大做,您需要获得用户的特殊许可,而用户可能不理解您为什么需要它。那么这可能是您能做的最好的了。如果您觉得延迟不起作用,请延长延迟时间