0

我已經參與了「類似的問題」,但我仍然無法從主項目啓動圖書館項目活動。Android:從主應用程序啓動圖書館活動

我有項目A(主) 和我有項目B(庫)

活動在庫清單(即使在主清單)

但是當我運行該代碼日誌拋出聲明在manifest.xml文件中詢問是否聲明活動的錯誤。

主要項目是正確包括圖書館,一切都編譯,但錯誤的是,我把我正在從主要項目嘗試的意圖:

Intent intent = new Intent(); 
intent.setComponent(new ComponentName("com.package.activities", "MyActivity")); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.setPackage(context.getPackageName()); // tried without this 
context.startActivity(intent); 

這是我的清單(從庫項目):

<activity 
     android:name="com.package.activities.MyActivity" 
     android:exported="true" 
     android:label="@string/title_activity" 
     android:screenOrientation="landscape" 
     android:configChanges="keyboardHidden|orientation"/> 

登錄:

android.content.ActivityNotFoundException:無法找到明確的活動ç lass {com.package.activities/MyActivity};你有沒有在你的AndroidManifest.xml中聲明這個活動?

+0

嘗試intent.setComponent(new ComponentName(「com.package.activities」,「com.package.activities.MyActivity」)); – Devrim

+0

我要試試我評論 –

+0

與此相同的結果 –

回答

0

試試這個:

Intent intent = new Intent(context, MyActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(intent); 
+0

這是不允許的,當我使用這段代碼時,編譯失敗「無法解析符號MyActivity「,當我從Android Studio(Alt + Enter)選項使用快速修復是:」添加依賴...「(我點擊該選項,但沒有任何反應)和」從模塊(庫)移動MyActivity到(主)「,但這不是所希望的。我們需要在庫中保留Activity。 –

+1

聽起來好像你的圖書館項目沒有被正確地包含在主項目中。你可以粘貼你的應用/ build.gradle文件的副本嗎? – dfinn

+0

你說得對,該項目沒有被正確包含,因爲它試圖在一個具有gradle-stable的主項目中使用gradle-experimental構建。它看起來像兩個不兼容。和Gradle(stable)不能將模塊附加到Gradle(實驗)。 –

0

當您嘗試啓動活動作爲一個單獨的組件,機器人開始尋找您的主項目的代碼中該庫的活動。由於該活動屬於圖書館而不屬於主項目,因此您可以獲得ActivityNotFoundException

既然你已經添加了庫項目作爲一個AAR文件,主要項目上,你可以簡單地從主體工程啓動庫活動如下:

Intent intent=new Intent(this, "your.library.package.activityname.class") 
startActivity(intent) 

必須在聲明庫活動主項目的清單文件。單行應該就足夠了

<application ...> 
    <activity android:name="your.library.package.activityname" /> 
</application> 
相關問題