我一直在尝试使用Android 6.0任务锁定/固定来锁定我的活动。它似乎不可行。有时,当我启动应用程序时,它会固定,并且一切都像应有的那样隐藏。其他时候它尝试了,但实际上并没有采取任何措施。例如,我得到了一个敬酒,上面写着"固定"的敬酒,然后立即说出一个"屏幕未锁定"的敬酒。最终结果是该应用程序尚未完全固定(隐藏家庭和任务切换图标(。但是,一旦进入这个周期,即使我继续尝试,它似乎也无法正常工作。这也是启动的问题,类似于此处报告的内容:
引导上的Android Pin活动
有什么办法可以告诉什么是导致Android取消我的活动的原因?它令人沮丧,因为它没有任何迹象表明它为什么不起作用。
我们的联想平板电脑无法固定家庭活动所在的任务。解决方案是在两个不同的任务中进行两个活动。
家庭活动
此活动是作为启动器启动时开始的,它唯一的责任是立即打开主要活动。请注意,它是透明的,并且具有不同的任务亲和力。
<activity
android:name=".HomeActivity"
android:clearTaskOnLaunch="true"
android:configChanges="orientation|screenSize"
android:launchMode="singleTask"
android:resumeWhilePausing="true"
android:stateNotNeeded="true"
android:taskAffinity="${applicationId}.home"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.HOME"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
该活动也将在其onCreate
和onNewIntent
中启动主要活动(因为它是singleTask
活动(。这是Kotlin中的代码:
class HomeActivity : Activity() {
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
handleIntent(intent)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
handleIntent(intent)
}
private fun handleIntent(intent: Intent) {
val i = packageManager.getLaunchIntentForPackage(packageName)
startActivity(i)
}
}
主要活动
这是您的主要活动 - 应用程序的主要切入点,可以从任何启动器开始。它具有默认任务亲和力(等于应用程序ID(。
<activity
android:name=".webview.activity.RealWebViewActivity"
android:clearTaskOnLaunch="true"
android:configChanges="orientation|screenSize"
android:exported="false"
android:launchMode="singleTask"
android:resumeWhilePausing="true"
android:stateNotNeeded="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>