我怎样才能从图书馆向 activity 发出意向?

How can I make an intent to an activity from a library?

我创建了一个库项目,然后构建它,获取 .aar 并解压缩。 获取包含库的 classes.jar 文件,并将其添加到另一个项目中。 该项目识别我的文件,我可以从中调用方法和函数。 我的问题是我尝试从我的库中调用 Activity 的意图,如下所示:

 textView = (TextView) findViewById(R.id.text);
    textView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, InCallActivity.class);
            intent.putExtra("duration",20);
            intent.putExtra("message","test");
            intent.putExtra("url","https://facetalk.vidyo-nl.com/mobile.html?roomdirect.html&key=QMvMp3eKTqOeLAWQ6HOvHqFJd0");
            intent.putExtra("test","true");
            startActivity(intent);
        }
    });

但我遇到这样的问题:

08-10 15:02:41.730: E/AndroidRuntime(18572): Process: com.vidyo.facetalklibtest, PID: 18572
08-10 15:02:41.730: E/AndroidRuntime(18572): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.vidyo.facetalklibtest/com.vidyo.vidyocore.activities.InCallActivity}; have you declared this activity in your AndroidManifest.xml?
08-10 15:02:41.730: E/AndroidRuntime(18572):    at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1794)
08-10 15:02:41.730: E/AndroidRuntime(18572):    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1512)
08-10 15:02:41.730: E/AndroidRuntime(18572):    at android.app.Activity.startActivityForResult(Activity.java:3930)
08-10 15:02:41.730: E/AndroidRuntime(18572):    at android.app.Activity.startActivityForResult(Activity.java:3890)
08-10 15:02:41.730: E/AndroidRuntime(18572):    at android.app.Activity.startActivity(Activity.java:4213)
08-10 15:02:41.730: E/AndroidRuntime(18572):    at android.app.Activity.startActivity(Activity.java:4181)
08-10 15:02:41.730: E/AndroidRuntime(18572):    at com.vidyo.facetalklibtest.MainActivity.onClick(MainActivity.java:32)
08-10 15:02:41.730: E/AndroidRuntime(18572):    at android.view.View.performClick(View.java:5204)
08-10 15:02:41.730: E/AndroidRuntime(18572):    at android.view.View$PerformClick.run(View.java:21153)
08-10 15:02:41.730: E/AndroidRuntime(18572):    at android.os.Handler.handleCallback(Handler.java:739)
08-10 15:02:41.730: E/AndroidRuntime(18572):    at android.os.Handler.dispatchMessage(Handler.java:95)
08-10 15:02:41.730: E/AndroidRuntime(18572):    at android.os.Looper.loop(Looper.java:148)
08-10 15:02:41.730: E/AndroidRuntime(18572):    at android.app.ActivityThread.main(ActivityThread.java:5417)
08-10 15:02:41.730: E/AndroidRuntime(18572):    at java.lang.reflect.Method.invoke(Native Method)
08-10 15:02:41.730: E/AndroidRuntime(18572):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
08-10 15:02:41.730: E/AndroidRuntime(18572):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
08-10 15:02:41.731: W/ActivityManager(787):   Force finishing activity com.vidyo.facetalklibtest/.MainActivity

现在我发现了一些关于需要在 project.properties 文件中设置的清单合并 manifestmerger.enabled=true。但是我正在使用 AndroidStudio,而不是 Eclipse,因此我没有那个文件。 我该如何解决这个问题?

How can I fix this issue?

正确使用库模块,通过 compile project(...)compile 指向存储库中库的工件,或者在紧要关头添加 compile file(...) 指向 AAR 文件。确保 AAR 具有包含您寻找的 <activity> 元素的清单。

IOW,删除以下内容:

took the .aar and unzipped it. Took the classes.jar file, which contains the library, and added it inside another project.

库模块和 AAR 以及 Android Studio 的清单合并是自动的;没有什么可以专门启用的。

您还需要在应用程序清单中使用完整路径声明 activity:

com.library.domain.activities.yourActivity

然后它可能会起作用。

<activity
    android:name=".MainActivity">
       <intent-filter>
            <action android:name="com.example.main.mainactivity" />
           <category android:name="android.intent.category.DEFAULT" />
      </intent-filter>
</activity>

在你的库中调用它来打开 MainActivity:

Intent intent = new Intent("com.example.main.mainactivity");
startActivity(intent);