【问题标题】:Android, How can I use external APK in my application?Android,如何在我的应用程序中使用外部 APK?
【发布时间】:2011-11-18 02:35:10
【问题描述】:

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

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

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

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" />

但结果还是一样。我会尝试遵循您的建议(使用意图过滤器)。

【问题讨论】:

    标签: android jar external apk


    【解决方案1】:

    您不能在 Eclipse 中执行此操作。 test.apk 需要安装,它需要导出你需要的活动并有一个意图过滤器。比如:

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

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

    【讨论】:

    • 谢谢尼古拉。我认为对于使用 Intent 过滤器,我的第一个项目应该先安装在手机上。之后我必须安装包装项目。然后调用测试项目。但我不想要这个。我希望测试项目成为包装项目的一部分。我无权访问测试代码,因此我想包装它。并在我需要的时候运行它。
    • 您需要将其转换为库项目才能包含在其他项目中。 developer.android.com/guide/developing/projects/…
    【解决方案2】:

    要像您正在做的那样(通过使用构造函数中的 Activity 类)启动一个具有显式意图的 Activity,该 Activity 必须在您的应用的清单中声明,并且必须编译到您的应用中。您不能为此使用单独的 apk 文件。

    做你想做的事情的方法是在 test.apk 中为活动声明一个意图过滤器,并使用适当的意图启动它。有关如何执行此操作的更多信息,请参阅指南主题 Intents and Intent FiltersIntent 类的文档。

    【讨论】:

    • 谢谢特德。就我而言,我可以访问测试项目的代码。但在未来,我没有访问权限。如何在我的应用程序中编译测试项目。有参考吗?再次感谢。
    • 如果您只想从另一个应用启动一个应用,请查看this thread 中的答案。由于您知道目标应用程序的详细信息,因此您可以跳过一些步骤(即查找包名称)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 2011-11-10
    • 2011-06-05
    • 2020-12-04
    相关资源
    最近更新 更多