Android,如何在我的应用程序中使用外部APK?

时间:2011-11-18 02:35:11

标签: android jar external apk

我创建了两个项目。第一个,提取手机信息并在屏幕上显示。我有这个项目的.apk文件(例如 test.apk )。

然后我创建了第二个项目。这个按钮在屏幕上有一个按钮,当我点击按钮时,我想要第一个项目运行(显示手机的信息)。我通过右键单击项目的根目录>构建路径>配置构建路径>添加外部JAR> test.apk

,将test.apk添加到此项目中

然后在代码中,我通过使用intent来调用它。这是我的代码:

btn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent("com.in.test.MainActivity"); 
                startActivity(intent);
            }
        });

然而,当我运行应用程序时,根据logcat,我看到以下错误: 11-18 10:09:28.933:E / AndroidRuntime(2237):未捕获的处理程序:由于未捕获的异常而导致线程主要退出 11-18 10:09:29.022:E / AndroidRuntime(2237):android.content.ActivityNotFoundException:找不到处理Intent的活动{act = com.in.test.MainActivity} 11-18 10:09:29.022:E / AndroidRuntime(2237):在android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1484) 。 。

我的问题是什么,在哪里? 感谢

更新: 在清单文件中,我在application元素中添加了这一行:

<activity
            android:name="com.in.test.MainActivity" />

但结果仍然相同。我会尝试按照您的建议(使用意图过滤器)。

2 个答案:

答案 0 :(得分:1)

你不能从Eclipse那里做到这一点。需要安装test.apk,它需要导出您需要的活动并为其设置一个intent过滤器。类似的东西:

 <intent-filter>
    <action android:name="com.infindo.test.MainActivity" />
    <category android:name="android.intent.category.DEFAULT" />
 </intent-filter>

如果您有权访问test.apk的源代码,请对其进行修改。如果没有,您只能使用它导出的活动/意图。

答案 1 :(得分:0)

要启动具有明确意图的活动(通过使用构造函数中的活动类),必须在应用程序的清单中声明活动,并且必须将其编译到您的应用程序中。你不能使用单独的apk文件。

执行所需操作的方法是为test.apk中的活动声明一个intent过滤器,并使用适当的intent启动它。有关如何执行此操作的详细信息,请参阅指南主题Intents and Intent FiltersIntent类的文档。