我刚刚在专业版和免费版中拆分了我的应用程序。因此,我让我的应用程序成为图书馆并创建了两个新项目。 免费版保持namespace
"com.mxp.time"
和亲版本得到namespace
"com.sourcecastle.mytime"
。 所以免费版本与我的图书馆有相同的namespace
。 除了当我从专业版中的首选项活动开始活动时,一切正常。 在那里,我得到:权限拒绝:启动意图
Permission Denial: starting Intent { act=android.intent.action.VIEW cmp=com.mxp.time/.DataManagementActivity } from ProcessRecord{45461048 30784:com.sourcecastle.mytime/u0a10012} (pid=30784, uid=10012) not exported from uid 10013
我的preferences.xml样子:
<!-- datamanagement -->
<PreferenceCategory
android:key="datamanagement_category"
android:title="@string/settings_datamanagement_title" >
<Preference
android:summary="@string/settings_datamanagement_pref_message"
android:title="@string/settings_datamanagement_pref_title" >
<intent
android:action="android.intent.action.VIEW"
android:targetClass="com.mxp.time.DataManagementActivity"
android:targetPackage="com.mxp.time" />
</Preference>
</PreferenceCategory>
我的清单:
<activity
android:name="com.mxp.time.DataManagementActivity"
android:exported="true"
android:label="@string/datamanagement_title" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
</intent-filter>
</activity>
我已经设置
“机器人:出口=“true”
在我的清单,但我仍然得到一个例外。
另外我有一个普遍的问题:我现在应该在哪里定义我的活动?在图书馆或真正的应用程序? 我试图从我的图书馆项目中删除所有权限和活动,我的应用程序继续工作。 但因为我得到了这个问题,我问自己,如果这不是一个安全问题,因为登记在我的应用我的活动,只让我重写,如“出口”设置...
谁能帮助我理解?
UPDATE:
这似乎工作:
<!-- datamanagement -->
<PreferenceCategory
android:key="datamanagement_category"
android:title="@string/settings_datamanagement_title" >
<!-- <Preference -->
<!-- android:summary="@string/settings_datamanagement_pref_message" -->
<!-- android:title="@string/settings_datamanagement_pref_title" > -->
<!-- <intent -->
<!-- android:action="android.intent.action.VIEW" -->
<!-- android:targetClass="com.mxp.time.DataManagementActivity" -->
<!-- android:targetPackage="com.mxp.time" /> -->
<!-- </Preference> -->
<PreferenceScreen
android:summary="@string/settings_datamanagement_pref_message"
android:title="@string/settings_datamanagement_pref_title" >
<intent android:action="com.mxp.time.DataManagementActivity" />
</PreferenceScreen>
</PreferenceCategory>
和:
<activity
android:name="com.mxp.time.DataManagementActivity"
android:exported="true"
android:label="@string/datamanagement_title" >
<intent-filter>
<action android:name="com.mxp.time.DataManagementActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
而我的另一个问题是,这里ansered: Android Library Manifest vs. App Manifest
你找到一个解决这个问题?我对我的一项活动有同样的问题,尽管我使用图书馆已有多年... –
是的, 阅读下面。 – stefan