2

MyMainActivity支持 Android N 新的多窗口模式。但是,我希望我AwesomeActivity不支持多窗口。

我尝试了以下方法:

AndroidManifest.xml

<activity
    android:name=".activities.MainActivity"
    android:label="@string/app_name"
    android:windowSoftInputMode="stateHidden"/>
<activity android:name=".activities.AwesomeActivity"
    android:resizeableActivity="false" />

MainActivity.java

Intent intent = new Intent(this, AwesomeActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
//removing CLEAR_TOP and SINGLE_TOP has no effect either
//Intent.FLAG_ACTIVITY_CLEAR_TASK in conjunction with Intent.FLAG_ACTIVITY_NEW_TASK does not have an effect either

我认为通过添加Intent.FLAG_ACTIVITY_NEW_TASK(有或没有Intent.FLAG_ACTIVITY_CLEAR_TASK),这将意味着AwesomeActivity它将成为其自己的任务堆栈中的根活动,因此,我应该无法在AwesomeActivity.

但是,这不起作用,我仍然可以从 切换到多窗口模式AwesomeActivity,这不是所需的行为。

尽管组合Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK似乎可以启动 AwesomeActivity,但这在某种意义上不起作用,如果您在 AwesomeActivity 中将应用程序置于后台,然后将 AwesomeActivity 带回前台,您将无法返回 MainActivity它已从任务堆栈中擦除。我相信在大多数情况下,用户希望能够返回,MainActivity所以这个解决方案是不够的。

4

2 回答 2

0

FLAG_ACTIVITY_NEW_TASK似乎不够。同时使用FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_MULTIPLE_TASK工作:

      startActivity(new Intent(MainActivity.this, ActivityTwo.class)
        .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_MULTIPLE_TASK));
于 2016-09-02T18:10:36.637 回答
-1

添加这个并尝试,我还没有验证 android:resizeableActivity="false"

请查看此链接以获取帮助https://developer.android.com/guide/topics/ui/multi-window.html#overview

于 2016-09-02T16:55:46.857 回答