android - 在库项目的 XML 文件中为 Intent 指定 targetPackage

标签 android android-intent package android-xml

我有一个库项目,我用它来构建两个应用程序,一个公共(public)应用程序和一个私有(private)应用程序供个人使用,还有一些对大多数人无用的设置。在这个库项目中,我定义了一个 PreferenceActivity(对于 API < Honeycomb)和一些 PreferenceFragments(对于 API >= Honeycomb),使用本指南的首选项 header :http://developer.android.com/guide/topics/ui/settings.html#BackCompatHeaders

为了支持旧设备,我按照指南中所示定义了这个 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
    <Preference 
        android:title="@string/base_de_donnees"
        android:summary="@string/summary_pref_restaurer_bdd_sd">
        <intent
            android:targetPackage="com.me.app_lib"
            android:targetClass="com.me.app_lib.activities.preferences.SettingsActivity"
            android:action="com.me.app_lib.activities.preferences.SettingsActivity.ACTION_PREF_BDD" />
    </Preference>

   <Preference 
       android:title="@string/saisie"
       android:summary="@string/summary_pref_saisie">
       <intent
           android:targetPackage="com.me.app_lib"
           android:targetClass="com.me.app_lib.activities.preferences.SettingsActivity"
           android:action="com.me.app_lib.activities.preferences.SettingsActivity.ACTION_PREF_SASISIE" />

   </Preference>
</PreferenceScreen>

其中com.me.app_lib是库项目的包,其中定义了SettingsActivity。 但是,当从其中一个子项目调用 Intent 时,我遇到了崩溃,因为 targetPackage 与子项目的不匹配。如果我将 com.me.app_lib 更改为 com.me.app_public(其中一个子项目的包)它会起作用,但因为我有两个子项目,所以这不是一个选项。

我是否必须将此文件复制到每个子项目并仅更改 targetPackage 行,还是有更好的选择?

最佳答案

我最后所做的是将 com.me.app_lib 定义为资源字符串。 android:targetPackage 属性变为:

android:targetPackage="@string/package_activity_preferences"

然后我可以在两个子项目中为这个字符串定义一个不同的值。这不像我希望的那样干净,但至少我不需要在两个子项目中复制粘贴相同的文件。 targetClass 是我的库项目的一部分,所以我不需要对它进行任何更改;只有 targetPackage 属性是个问题。

关于android - 在库项目的 XML 文件中为 Intent 指定 targetPackage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18924279/

相关文章:

macos - 创建 R 包时,错误 ['\+' 是从 "\+"开始的字符串中无法识别的转义

android - 如何在android上的多线程中创建屏障

Android:将事件发布到View的消息队列

android - MPAndroidChart 设置当前可见的 X 轴

android - 如何处理用户对 ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 的回答?

c# - 运行程序需要哪些 C++ 包?

java - Android:通过Sco蓝牙耳机播放声音

android - 检查上下文是否与 Intent 调用中的类相同

android - Activity 是由同一类、同一 Activity 的 Intent 创建的吗?

android - 获取所有应用程序的包名和类名