我使用以下代码在/data/data/com.abc.def/files/目录中写入数据。
InputStream input = new BufferedInputStream(url.openStream());
FileOutputStream fos = openFileOutput(file_name, Context.MODE_WORLD_READABLE);
byte data[] = new byte[1024];
long total = 0;
while ((count = input.read(data)) != -1) {
total += count;
publishProgress(""+(int)((total*100)/lenghtOfFile));
fos.write(data, 0, count);
}
fos.flush();
fos.close();
input.close();
} catch (Exception e) {}
使用以下代码通过意图打开文件。
File file = getDir(file_name, Context.MODE_WORLD_READABLE);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file),"application/vnd.android.package-archive");
startActivity(intent);
但它会出现“解析包时出现问题
”这样的错误请帮忙。 提前谢谢。
答案 0 :(得分:0)
我的手机是运行Android 2.3.3版本的三星Galaxy S II,当我尝试安装软件包时,我收到错误“Parse Error”。我使用Android 3.2来制作这些软件包。
您正尝试在2.3.3设备上打开3.2应用程序。
解决方案
从清单文件中更改所需的API级别标记android:minSdkVersion
或删除所需的API级别标记android:minSdkVersion。
答案 1 :(得分:0)
您使用的API级别是多少?尝试使用8+(Froyo或以上)
将此行添加到清单文件
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="15" />
或
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="15" />
这样你就可以编译得更高,并在较低版本中运行
答案 2 :(得分:0)
我解决了。
String fileName = "tmp.apk";
FileOutputStream fos = openFileOutput(fileName,
MODE_WORLD_READABLE | MODE_WORLD_WRITEABLE);
// write the .apk content here ... flush() and close()
// Now start the standard instalation window
File fileLocation = new File(context.getFilesDir(), fileName);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(fileLocation),
"application/vnd.android.package-archive");
context.startActivity(intent);