2013-05-07 2 views
0

Bonjourандроид: избежать загрузки файла с 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, он должен быть «World Readable», это означает, что каждый пользователь может после загрузки файла (и перед установкой) получить файл apk.

Кто-нибудь знает, как установить хорошие разрешения для предотвращения внешних загрузок?

Благодарим за понимание!

ответ

1

Кто-нибудь знает, как установить хорошие разрешения для предотвращения внешних загрузок?

У вас уже есть «хорошие разрешения». Установщик работает в отдельном процессе от вашего, и поэтому он должен иметь возможность читать файл. Поскольку у вас нет способа предоставить разрешения только для этого установщика, вам необходимо предоставить разрешения на чтение для всех возможных процессов.

Для большинства вещей мы использовали бы ContentProvider, чтобы обойти это ограничение. Увы, at least as of a year ago, the installer did not support content://Uri values.

+0

Благодарим вас за ответ. Для версий Android до 4.0 поставщик контента не работает ... Я попытаюсь найти другое решение! – johann

Смежные вопросы