Kaip perduoti nuorodą į failą Intent?
sobes.tech AI
Atsakymas iš AI
Failo nuorodos perdavimui Intent naudojamas Uri.
-
Naudojant
FileProvider(Rekomenduojamas būdas nuo Android N ir aukščiau):
Saugiausias ir rekomenduojamas būdas, nes jis užkerta keliąFileUriExposedExceptionnaujausiose Android versijose.-
Reikia apibrėžti
FileProviderAndroidManifest.xmlfaile ir sukurti XML failą su failų keliais. -
Gauti
UrinaudojantFileProvider.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> -
Perdavimo kodas:
// Laikoma, kad 'file' yra java.io.File objektas Uri fileUri = FileProvider.getUriForFile( context, context.getPackageName() + ".provider", file ); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(fileUri, "application/pdf"); // Nustatykite tinkamą MIME tipą intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // Suteikti leidimą skaityti if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); }
-
-
Naudojant
Uri.fromFile()(Pasenęs nuo Android N):
Šis metodas nerekomenduojamas naujausiose Android versijose dėl saugumo problemų.-
Nuo Android N ir aukščiau, failų URI perdavimas per
IntentsukeliaFileUriExposedExceptionsąveikaujant su kitomis programomis. -
Perdavimo kodas:
// Laikoma, kad 'file' yra java.io.File objektas Uri fileUri = Uri.fromFile(file); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(fileUri, "application/pdf"); // Nustatykite tinkamą MIME tipą // Šis kodas gali sukelti `FileUriExposedException` Android N+ versijose if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); }
-
Trumpa lentelė:
| Metodas | Rekomenduojama (Android N+) | Saugumas |
|---|---|---|
FileProvider |
✅ | Aukštas (užkerta kelią FileUriExposedException) |
Uri.fromFile() |
❌ | Žemas (gali sukelti FileUriExposedException) |
Visada naudokite FileProvider failų dalijimuisi tarp programų Android N ir aukštesnėse versijose.