Kuidas edastada faili link Intentis?
sobes.tech AI
Vastus AI-lt
Faili viitamiseks Intent kaudu kasutatakse Uri.
-
FileProviderkasutamine (soovitatav viis Android N ja uuemate versioonide puhul):
Kõige turvalisem ja soovitatav viis, kuna see takistabFileUriExposedExceptiontekkimist uusimates Androidi versioonides.-
Määrake
FileProviderAndroidManifest.xmlja looge XML-fail failide teede määramiseks. -
Saage
UriFileProvider.getUriForFile()abil. -
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> -
Koodülekandmine:
// Eeldatakse, et 'file' on java.io.File objekt Uri fileUri = FileProvider.getUriForFile( context, context.getPackageName() + ".provider", file ); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(fileUri, "application/pdf"); // Määrake õige MIME tüüp intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // Luba lugemisõigus if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); }
-
-
Uri.fromFile()kasutamine (vananenud Android N puhul):
Seda meetodit ei soovitata kasutada uusimates Androidi versioonides turvalisuse tõttu.-
Alates Android N-st põhjustab faili URI edastamine
IntentkauduFileUriExposedException, kui see toimub teiste rakendustega, mis ei kuulu praegusele rakendusele. -
Kood näide:
// Eeldatakse, et 'file' on java.io.File objekt Uri fileUri = Uri.fromFile(file); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(fileUri, "application/pdf"); // Määrake õige MIME tüüp // See kood võib põhjustada `FileUriExposedException` Android N+ puhul teiste rakendustega suhtlemisel if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); }
-
Lühike tabel:
| Meetod | Soovitus (Android N+) | Turvalisus |
|---|---|---|
FileProvider |
✅ | Kõrge (takistab FileUriExposedException) |
Uri.fromFile() |
❌ | Madal (võib põhjustada FileUriExposedException) |
Alati kasutage FileProvider failide vahetamiseks Android N ja uuemate rakenduste vahel.