1
我有一个Android应用程序PreferenceActivity
,其中一个偏好项启动我自己的活动之一(“关于”屏幕)。入口看起来是这样的:跳转到Android偏好活动活动
<PreferenceScreen android:title="@string/about.Title">
<intent ... />
</PreferenceScreen>
同时,(这很重要),我使用的摇篮,并为我调试.debug
应用程序ID后缀的基础之上。我在手机上安装了Play商店版本和调试版本。
问题是:以上使用什么样的意图?我知道有两种选择,无论其工作:
- 使用的
android:action
意图用我自己的操作字符串,并注册在我的清单的行动字符串<intent-filter>
。- 如果我在清单中使用
android:exported="false"
,则安装这两个应用程序时,该活动无法在Android 7.1上加载。 (我得到了“完成操作使用...没有应用程序可以执行此操作”。)如果只安装了一个(任一个),它就可以正常工作。 - 如果我使用
android:exported="true"
,那么我不仅可以导出一个内部活动,但是当我点击首选项时,两个活动的实例被压入堆栈(每个应用一个)。如果我只安装两个应用程序中的一个,则只显示一个实例。
- 如果我在清单中使用
- 使用
android:targetPackage
和android:androidClass
的做法,但我不知道用了什么包,因为它是释放和调试版本不同(因为后缀)。一种解决方案是在调试资源文件夹中有一个preferences.xml
文件的副本,只更改了软件包,但这很容易出错。
我多年来一直在使用选项#1.1,但最近它在我的手机上坏掉了,我怀疑7.1更新是怪罪。我以前从来没有在这两个安装的应用程序之间发生串扰!
这必须是一个很常见的模式!有任何想法吗?