应用程序的默认包是"example.app".
目标活动的包是"example.app.abc".
在java代码中调用"example.app.abc.TheActivity"的startActivity()就行了,
但在preference.xml上指定它不起作用:
<PreferenceScreen android:key="key"
android:title="@string/title"
>
<intent android:action="android.intent.action.MAIN"
android:targetPackage="example.app.abc"
android:targetClass="TheActivity"
/>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)
我试过android:targetClass ="example.app.abc.TheActivity",但它也不起作用.
是不是可以优先启动非默认包的活动?
在尝试编写自定义Android同步适配器时,我遵循了这一点.我成功地在常规设置中显示了一个条目(帐户设置),并使用上面示例中的以下代码片段.
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="General Settings" />
<PreferenceScreen android:key="account_settings"
android:title="Account Settings" android:summary="Sync frequency, notifications, etc.">
<intent android:action="fm.last.android.activity.Preferences.ACCOUNT_SETUP"
android:targetPackage="fm.last.android"
android:targetClass="fm.last.android.activity.Preferences" />
</PreferenceScreen>
</PreferenceCategory>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)
代码在常规设置中为我输入了一个条目(帐户设置):
单击帐户设置后,我收到如下错误,设备不必要地重新启动.
ERROR/AndroidRuntime(30057):android.util.AndroidRuntimeException:从Activity上下文外部调用startActivity()需要FLAG_ACTIVITY_NEW_TASK标志.这真的是你想要的吗?
我知道这个错误可以通过代码解决.由于"帐户设置"首选项是基于XML的代码,因此我遇到了错误.
任何人都可以帮助解决问题吗?
我们如何通过代码控制这些偏好?