Ako odovzdať odkaz na súbor v Intent?
sobes.tech AI
Odpoveď od AI
Pre prenos linka na fajl u Intent koristi se Uri.
-
Korišćenje
FileProvider(Preporučeni način od Android N i više):
Najsigurniji i preporučeni način, jer sprečavaFileUriExposedExceptionna najnovijim verzijama Androida.-
Potrebno je definisati
FileProvideruAndroidManifest.xmli kreirati XML fajl sa putanjama do fajlova. -
Dobijanje
UripomoćuFileProvider.getUriForFile(). -
AndroidManifest.xml:<application> <provider android:name="androidx.core.content.FileProvider" android:authorities="${applicationId}.provider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths"/> </provider> </application> -
res/xml/provider_paths.xml:<paths> <external-path name="external_files" path="."/> </paths> -
Kod prenosa:
// Pretpostavlja se da je 'file' objekat java.io.File Uri fileUri = FileProvider.getUriForFile( context, context.getPackageName() + ".provider", file ); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(fileUri, "application/pdf"); // Postavi pravi MIME tip intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // Dodeli dozvolu za čitanje if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); }
-
-
Korišćenje
Uri.fromFile()(Zastarjelo od Android N):
Ova metoda se ne preporučuje na najnovijim verzijama Androida zbog sigurnosnih problema.-
Od Android N nadalje, prenos fajl URI-ja putem
IntentizazivaFileUriExposedExceptionpri interakciji sa aplikacijama koje ne pripadaju trenutnoj aplikaciji. -
Kod prenosa:
// Pretpostavlja se da je 'file' objekat java.io.File Uri fileUri = Uri.fromFile(file); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(fileUri, "application/pdf"); // Postavi pravi MIME tip // Ovaj kod može izazvati `FileUriExposedException` na Android N+ pri interakciji sa drugim aplikacijama if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); }
-
Kratka tabela:
| Metod | Preporučeno (Android N+) | Bezbednost |
|---|---|---|
FileProvider |
✅ | Visoka (sprečava FileUriExposedException) |
Uri.fromFile() |
❌ | Niska (može izazvati FileUriExposedException) |
Uvek koristite FileProvider za razmenu fajlova između aplikacija na Android N i više.