我已在/ res / raw目录中为另一个应用程序存储了一个.apk文件,并希望为用户提供安装它的提示。这是我目前的代码:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File("android.resource://" + getPackageName() + "/res/raw/myapk.apk")), "application/vnd.android.package-archive");
startActivity(intent);
然而,当意图运行时,我得到一个Parse错误:There is a problem parsing the package.
当我运行其他应用程序时,.apk文件是由/ bin目录中的eclipse创建的文件。
如何正确完成此程序化本地安装?
答案 0 :(得分:6)
我明白了。我最终将我的.apk文件放在/ assets目录中,并以编程方式将其复制到我安装它的SD卡中。这是我的代码:
AssetManager assetManager = getAssets();
InputStream in = null;
OutputStream out = null;
try {
in = assetManager.open("myapk.apk");
out = new FileOutputStream("/sdcard/myapk.apk");
byte[] buffer = new byte[1024];
int read;
while((read = in.read(buffer)) != -1){
out.write(buffer, 0, read);
}
in.close();
in = null;
out.flush();
out.close();
out = null;
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File("/sdcard/myapk.apk")), "application/vnd.android.package-archive");
startActivity(intent);
}catch(Exception e){
// deal with copying problem
}
希望这可以帮助其他有类似问题的人!
答案 1 :(得分:0)
String path = "file:///android_asset/raw/myapk.apk";
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(path)), "application/vnd.android.package-archive");
startActivity(intent);
答案 2 :(得分:0)
还在清单文件中添加一项权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
否则会出现“权限被拒绝”错误。