我正在使用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>
我怎样才能完成它?
注意:我不想使用额外的活动来决定继续应用的位置。
答案 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