2

我一直在尝试使用 android 6.0 任务锁定/锁定来锁定我的活动。它似乎工作不可靠。有时,当我启动我的应用程序时,它会固定并且一切都像它应该隐藏的那样。其他时候它会尝试,但实际上并不需要。例如,我得到一个说“Screen Pinned”的吐司,然后是一个说“Screen Unpinned”的吐司。最终结果是应用程序没有完全固定(隐藏主页和任务切换器图标)。但是一旦进入这个循环,即使我继续尝试,它似乎也不起作用。这也是启动时的问题,类似于此处报告的内容:

启动时的 Android pin 活动

有什么方法可以判断是什么导致 android 取消固定我的活动?这是令人沮丧的,因为它没有说明为什么它不起作用。

4

1 回答 1

0

我们的联想平板电脑无法固定 Home 活动所在的任务。解决方案是在两个不同的任务中进行两个活动。

家庭活动

此活动在启动时作为启动器启动,其唯一责任是立即打开主要活动。请注意,它是透明的并且具有不同的任务亲和性

<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>
于 2017-08-30T13:33:21.113 回答