1

我在清单中声明了一项活动:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.my">
  <uses-sdk android:minSdkVersion="14"/>
  <application>
    <activity
        android:name="com.my.InternalDummyActivity"
        android:exported="false">
    </activity>
  </application>
</manifest>

我也试过exported=false没有

该应用程序包含一个带有另一个活动的内部库。

我尝试从其他活动(其他命名空间)调用显式意图但我总是遇到异常:

Intent intent1 = new Intent(activity.getApplicationContext(), InternalDummyActivity.class);
activity.startActivity(intent1);


ComponentName componentName2 =
    new ComponentName(
        "com.my","com.my.InternalDummyActivity");
Intent intent2 = new Intent().setComponent(componentName2); //dones work
activity.startActivity(intent2);


Process: com.comp.outter, PID: 9267
android.content.ActivityNotFoundException: Unable to find explicit activity class {com.my/com.my.InternalDummyActivity}; have you declared this activity in your AndroidManifest.xml?

我怎样才能解决这个问题?

4

2 回答 2

1

尝试使用使用 Context 的 ComponentName 的构造函数之一,例如

ComponentName cn = new ComponentName(context,
"com.my.InternalDummyActivity");

出于某种原因,只有在动态知道类的情况下,才能使用构造函数来获取两个字符串。

此外,更新您的清单如下:

<activity
        android:name=".InternalDummyActivity">
</activity>

并且应用程序包名称应仅小写,如Oracle Docs中 Java 的命名约定中所述

包名全部小写,避免与类名或接口名冲突

于 2019-08-13T13:55:03.217 回答
0

这个问题可能与下面给出的线程重复 How to call activity from a library module in android studio

检查这是否是您要查找的内容。

于 2019-08-13T14:25:34.063 回答