2

我正在使用以下代码在 /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);

但它给出了类似“解析包有问题”的错误

在此处输入图像描述 请帮忙。提前致谢。

4

3 回答 3

0

我的手机是运行 Android 版本 2.3.3 的三星 Galaxy S II,当我尝试安装软件包时,我收到错误“解析错误”。我使用 Android 3.2 来制作这些包。

您正尝试在 2.3.3 设备上打开 3.2 应用程序。

解决方案

从清单文件中更改所需的 API 级别标记 android:minSdkVersion

或删除所需的 API 级别标记 android:minSdkVersion。

于 2012-10-25T09:02:43.830 回答
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);
于 2012-10-25T09:32:44.097 回答
0

您使用的 API 级别是多少?尝试使用 8+ (Froyo 或以上)


编辑

将此行添加到您的清单文件

<uses-sdk
    android:minSdkVersion="15"
    android:targetSdkVersion="15" />

或者

<uses-sdk
    android:minSdkVersion="7"
    android:targetSdkVersion="15" />

这样您就可以在更高版本中编译并在更低版本中运行

于 2012-10-25T09:14:58.750 回答