2013-06-05 144 views
0

我需要创建一个应用程序,它将安装我创建的一些apk(名称是myapp.apk)文件。 (我单独检查了myapp.apk,它工作正常)通过另一个应用程序安装一个android应用程序

我在res文件夹内创建了一个文件夹raw,并将myapp.apk文件放在那里。 我下面的代码添加到我的应用程序:

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.fromFile(new File("R.raw.myapp")), "application/vnd.android.package-archive"); 

但我发现了在模拟器上出现的语法错误(日食Android模拟器)。

我感谢你的帮助

回答

0

首先,R.raw.myapp不是一个文件。它是原始资源的整数标识符。

其次,您无法从资源(或资产或ContentProvider)安装APK。它必须是文件系统上的文件,可被其他进程读取。

因此,使用getResources().openRawResource()在您的APK上获得InputStream,将其写入外部存储,然后在您的Intent的外部存储中使用该文件。

+0

感谢您的回答。 是否可以从内部存储中读取它? 基本上我想做的事情(以及如何正确处理这个问题非常困惑)是,其他应用程序将能够(当给出我的应用程序的SDK和apk)添加到他们的应用程序,这样做,我的应用程序也可以安装。 (我的应用程序是一个简单的,只是创建我的网站的Web视图)。 再次感谢 – dev

+0

@dev:“是否可以从内部存储中读取它?” - 只有当你跳过篮球让世界可读。说白了,你的描述听起来很像恶意软件(应用程序B作为运行应用程序A的一部分安装)。如果您的应用“仅创建了[您的]网站的web视图”,那么只需将您的“sdk”将您网站的URL发布到用户选择的浏览器中,然后彻底转储install-the-APK方法。 – CommonsWare

相关问题