2013-07-03 13 views
7

l'URI del file è noto, come ad esempioCome verificare se esiste un file uri conosciuto nello spazio di archiviazione Android?

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

voglio verificare se questo file è possibile aprire o no in background, come fare?

+0

Definire "in background"? – fge

+0

@fge Forse non bloccare il thread principale. – johnchen902

+0

La tua domanda non è chiara, vuoi controllare se un apk è aperto indipendentemente da come è stato aperto, o vuoi controllare se è aperto usando un thread separato? –

risposta

20

controllare se un file di un percorso esiste come questo:

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

tenere a mente per rimuovere qualcosa come "file: //", ecc utilizzare in altro modo:

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

Inoltre si ha per impostare le autorizzazioni appropriate per la tua app in AndroidManifest.xml per accedere alla sdcard:

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

Avviare estraendo il nome del file utilizzando 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 

Si consiglia di utilizzare URI qui, dal momento che si prenderà cura di decodifica di tutti i possibili spazi/caratteri non validi nel URI, ma legali nei nomi di file.

Problemi correlati