2013-05-07 36 views
0

卓悅安卓:避免與MODE_WORLD_READABLE

文件下載我想創建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文件,它必須是「世界可讀」,這意味着每個人都可以在下載文件之後(並在安裝之前)獲取apk文件。

有誰知道如何設置良好的權限,以避免外部下載?

謝謝您的閱讀!

回答

1

有誰知道如何設置良好的權限,以避免外部下載?

您已擁有「良好的權限」。安裝程序在與您分開的過程中運行,因此它必須能夠讀取該文件。由於您無法僅爲安裝程序授予權限,因此您必須授予所有可能進程的讀取權限。

對於大多數情況,我們將使用ContentProvider來解決此限制。唉,at least as of a year ago, the installer did not support content://Uri values

+0

謝謝你的回答。對於4.0以前的android版本,內容提供者不起作用...我會嘗試找到另一個解決方案! – johann 2013-05-07 15:01:14