android:避免使用MODE_WORLD_READABLE下载文件

时间:2013-05-07 11:07:25

标签: android apk file-permissions android-install-apk

的Bonjour

我想为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文件。

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

感谢您阅读!

1 个答案:

答案 0 :(得分:1)

  

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

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

对于大多数情况,我们会使用ContentProvider来解决此限制。唉,at least as of a year ago, the installer did not support content:// Uri values