Kā nodot saiti uz failu Intent?
sobes.tech AI
Atbilde no AI
Lai nodotu saiti uz failu Intent, tiek izmantots Uri.
-
FileProviderizmantošana (ieteicamais veids ar Android N un jaunākām versijām):
Visdrošākais un ieteicamākais veids, jo novēršFileUriExposedExceptionjaunākajās Android versijās.-
Jādefinē
FileProviderAndroidManifest.xmlun jāizveido XML fails ar ceļiem uz failiem. -
Jāiegūst
UriarFileProvider.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> -
Pārneses kods:
// Pieņem, ka 'file' ir java.io.File objekts Uri fileUri = FileProvider.getUriForFile( context, context.getPackageName() + ".provider", file ); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(fileUri, "application/pdf"); // Norādiet pareizo MIME tipu intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // Dot atļauju lasīšanai if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); }
-
-
Uri.fromFile()izmantošana (novecojusi ar Android N):
Šo metodi neiesaka izmantot jaunākajās Android versijās drošības iemeslu dēļ.-
Sākot ar Android N, failu URI nodošana ar
IntentizraisaFileUriExposedException, sadarbojoties ar citām lietojumprogrammām, kas nepieder pašreizējai lietojumprogrammai. -
Pārneses kods:
// Pieņem, ka 'file' ir java.io.File objekts Uri fileUri = Uri.fromFile(file); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(fileUri, "application/pdf"); // Norādiet pareizo MIME tipu // Šis kods var izraisīt `FileUriExposedException` ar Android N+ sadarbojoties ar citām lietojumprogrammām if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); }
-
Īss tabulas pārskats:
| Metode | Ieteicamība (Android N+) | Drošība |
|---|---|---|
FileProvider |
✅ | Augsta (novērš FileUriExposedException) |
Uri.fromFile() |
❌ | Zema (var izraisīt FileUriExposedException) |
Vienmēr izmantojiet FileProvider failu apmaiņai starp lietojumprogrammām Android N un jaunākās versijās.