2013-07-03 5 views
7

Файл Ури известен, например,Как проверить, существует ли известный файл uri в хранилище Android?

`file:///mnt/sdcard/Download/AppSearch_2213333_60.apk` 

Я хочу, чтобы проверить, если этот файл можно открыть или не в фоновом режиме, как это сделать?

+0

Определить «в фоновом режиме»? – fge

+0

@fge Возможно, не блокирует основной поток. – johnchen902

+0

Ваш вопрос непонятен, вы хотите проверить, открыт ли apk независимо от того, как он был открыт, или вы хотите проверить, открыт ли он с помощью отдельного потока? –

ответ

20

Проверьте, если файл существует путь, как это:

File file = new File("/mnt/sdcard/Download/AppSearch_2213333_60.apk"); 
if (file.exists()) { 
//Do something 
} 

Имейте в виду, чтобы удалить что-то вроде «файл: //» и т.д. в противном случае используйте:

File file = new File(URI.create("file:///mnt/sdcard/Download/AppSearch_2213333_60.apk").getPath()); 
if (file.exists()) { 
    //Do something 
} 

Также у вас есть для установки соответствующих разрешений для вашего приложения в AndroidManifest.xml для доступа к SD-карте:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
1

Start путем извлечения файла с помощью URI:

final String path = URI.create("file:///mnt/sdcard/Download/AppSearch_2213333_60.apk") 
    .getPath(); // returns the path segment of this URI, ie the file path 
final File file = new File(path).getCanonicalFile(); 
// check if file.exists(); try and check if .canRead(), etc 

Рекомендуется использовать URI здесь, так как он будет заботиться о декодировании всех возможных пробелов/символов незаконных в URIs, но юридические в именах файлов.

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