设置默认启动器以继续上一个活动

时间:2018-01-11 08:14:34

标签: android android-activity android-launcher

我正在使用Android中的Kiosk模式,而我的应用程序有多个活动。让我们说它们是活动A,活动B,活动C.

我在活动A中设置默认启动器。以下是我的操作方法。

PackageManager packageManager = getPackageManager();
ComponentName componentName = new ComponentName(this, FakeLauncherActivity.class);
packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

Intent selector = new Intent(Intent.ACTION_MAIN);
selector.addCategory(Intent.CATEGORY_HOME);
selector.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(selector);

packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, PackageManager.DONT_KILL_APP);

但是我的主要活动是活动B.所以每当我在活动B或活动C中,主页按钮重新启动活动A.而不是这样做,我希望它继续我的最后一个活动而不重新启动它来自活动A.

这是我的清单:

<application
    android:name="com.bambulabs.codebase.Models.Global"
    android:hardwareAccelerated="false"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:logo="@mipmap/ic_launcher"
    android:theme="@style/MyMaterialTheme"
    tools:replace="android:icon">

    <activity
        android:name="com.bambulabs.codebase.ActivityA"
        android:configChanges="locale"
        android:label="@string/app_name"
        android:screenOrientation="sensorPortrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
            <action android:name="android.net.wifi.SCAN_RESULTS"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.LAUNCHER" />
            <category android:name="android.intent.category.HOME" />
        </intent-filter>
    </activity>

    <activity
        android:name="com.bambulabs.codebase.ActivityB"
        android:configChanges="locale"
        android:label="@string/app_name"
        android:screenOrientation="sensorPortrait"
        android:launchMode="singleTask">
    </activity>

    <activity
        android:name="com.bambulabs.codebase.ActivityC"
        android:configChanges="locale"
        android:label="@string/app_name"
        android:screenOrientation="sensorPortrait">
    </activity>

</application>

我怎样才能完成它?

注意:我不想使用额外的活动来决定继续应用的位置。

1 个答案:

答案 0 :(得分:0)

我找到了答案!

我所做的就是将 launchMode =“singleInstance”属性移至清单中的应用程序级别,并使ActivityA launchMode =“singleTop”

这是工作清单文件:

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css">

<div class="slider">
  <div class="current">
    <img src="https://dribbble.s3.amazonaws.com/users/4467/screenshots/257352/abraham-lewis.jpg" />
  </div>
  <div>
    <img src="https://dribbble.s3.amazonaws.com/users/4467/screenshots/245651/robot.jpg" />
  </div>
  <div>
    <img src="https://dribbble.s3.amazonaws.com/users/4467/screenshots/212240/brainoid.jpg" />
  </div>
</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

有关launchMode属性的更多详细信息:https://inthecheesefactory.com/blog/understand-android-activity-launchmode/en