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> 
相关问题