0

你好

我想为 android 创建一个简单的市场应用程序,但我遇到了一个烦人的问题。

安装流程如下:

1- 在应用程序上下文中下载 apk 文件:

  InputStream input = new BufferedInputStream(url.openStream()) ;
  OutputStream output = openFileOutput("xx.apk", Activity.MODE_WORLD_READABLE);

  byte data[] = new byte[1024];

  while ((count = input.read(data)) != -1 && statusDownload ) {  
    output.write(data, 0, count);
 }

 output.flush();
 output.close();
 input.close();

2-下载完成后:

promptInstall = new Intent(Intent.ACTION_VIEW);             
File fileApk = new File (getFilesDir() + "/xx.apk");
promptInstall.setDataAndType(Uri.fromFile(fileApk) , Consts.APK_FILE_INSTALL_TYPE);
startActivityForResult(promptInstall,654);

3-安装后(或如果取消),apk 文件被删除:

 File fileApk = new File (a.getFilesDir() + "/xx.apk" );
 fileApk.delete();

为了安装一个apk文件,它必须是“World Readable”,这意味着每个人都可以在下载文件之后(安装之前)获取apk文件。

有谁知道如何设置良好的权限以避免外部下载?

感谢您的阅读!

4

1 回答 1

1

有谁知道如何设置良好的权限以避免外部下载?

您已经拥有“良好权限”。安装程序在与您的不同进程中运行,因此它必须能够读取该文件。由于您无法为此仅向安装程序授予权限,因此您必须向所有可能的进程授予读取权限。

对于大多数事情,我们会使用 aContentProvider来绕过这个限制。唉,至少在一年前,安装程序不支持content:// Urivalues

于 2013-05-07T11:19:30.200 回答