我在Eclipse中创建了一个应用程序,并在此应用程序的assets文件夹中放置了一些其他.apk
个文件。我添加了一些图像按钮和onClick我想安装置于assets文件夹中的.apk
应用程序而不将其复制到外部SD卡。我正在尝试以下代码,但我得到了Parse Error。这是代码:
ImageButton animal1 = (ImageButton)findViewById(R.id.imageButton1);
animal1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
AssetManager assetManager = getAssets();
InputStream in = null;
OutputStream out = null;
try {
in = assetManager.open("Animal Game.apk");
out = new FileOutputStream("/data/data/com.mypack.myproj/Animal Game.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(newFile("/data/data/com.mypack.myproj/files/Animal Game.apk")), "application/vnd.android.package-archive");
startActivity(intent);
} catch(Exception e) {
Toast.makeText(getBaseContext(), "Error: "+e, Toast.LENGTH_LONG).show();
}
}
});
我得到的错误是Parse Error:
解析包时出现问题。
请有人帮我解决此错误
答案 0 :(得分:1)
您必须先将apk文件复制到SD卡,然后再将其传递给PackageManager,因为PackageManager作为独立应用程序在单独的进程中运行,并且无法访问应用程序的内部文件。