2014-02-25 43 views
0

我剛剛在專業版和免費版中拆分了我的應用程序。因此,我讓我的應用程序成爲圖書館並創建了兩個新項目。 免費版保持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

+0

你找到一個解決這個問題?我對我的一項活動有同樣的問題,儘管我使用圖書館已有多年... –

+0

是的, 閱讀下面。 – stefan

回答

1

聲明你的活動這樣:

<activity 
     android:name="com.sourcecastle.commons.activity.DataManagementActivity" 
     android:exported="true" 
     android:label="@string/datamanagement_title" > 
     <intent-filter> 
      <action android:name="com.sourcecastle.commons.activity.DataManagementActivity" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 

在的preferences.xml做下列方式:

<PreferenceCategory 
    android:key="datamanagement_category" 
    android:title="@string/settings_datamanagement_title" > 
    <PreferenceScreen 
     android:summary="@string/settings_datamanagement_message" 
     android:title="@string/settings_datamanagement_title" > 
     <intent android:action="com.sourcecastle.commons.activity.DataManagementActivity" /> 
    </PreferenceScreen> 
</PreferenceCategory> 

乾杯, 斯特凡

相關問題