როგორ გადავცეთ ფაილზე ბმული Intent-ში?
sobes.tech AI
პასუხი AI-სგან
ფაილზე ბმულის გადაცემისთვის Intent-ში გამოიყენება Uri.
-
FileProvider-ის გამოყენება (შეფასებულია Android N და ზევით):
ყველაზე უსაფრთხო და რეკომენდებული მეთოდი, რადგან თავიდან აცილებსFileUriExposedException-ს Android-ის უახლეს ვერსიებში.-
საჭიროა
FileProvider-ის განსაზღვრაAndroidManifest.xml-ში და XML ფაილის შექმნა ფაილზე გზების მითითებით. -
მიიღეთ
UriFileProvider.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> -
კოდი გადაცემისთვის:
// განვიხილავთ, რომ 'file' არის java.io.File ობიექტი Uri fileUri = FileProvider.getUriForFile( context, context.getPackageName() + ".provider", file ); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(fileUri, "application/pdf"); // სწორ MIME ტიპს დააყენეთ intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // ნებართვის მინიჭება if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); }
-
-
Uri.fromFile()-ის გამოყენება (ძველი Android N-დან):
ეს მეთოდი არ არის რეკომენდებული უსაფრთხოების პრობლემების გამო.-
Android N და შემდეგ, ფაილური URI-ების გადაცემა
Intent-ით იწვევსFileUriExposedException-ს სხვა აპლიკაციებთან ურთიერთობის დროს. -
კოდი გადაცემისთვის:
// განვიხილავთ, რომ 'file' არის java.io.File ობიექტი Uri fileUri = Uri.fromFile(file); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(fileUri, "application/pdf"); // სწორ MIME ტიპს დააყენეთ // ეს კოდი შეიძლება გამოიწვიოს `FileUriExposedException` Android N+-ზე სხვა აპლიკაციებთან ურთიერთობისას if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); }
-
სოკეტური სია:
| მეთოდი | რეკომენდებულია (Android N+) | უსაფრთხოება |
|---|---|---|
FileProvider |
✅ | მაღალი (გადაცილება FileUriExposedException) |
Uri.fromFile() |
❌ | დაბალი (შესაძლოა გამოიწვიოს FileUriExposedException) |
ყოველთვის გამოიყენეთ FileProvider ფაილების გაზიარებისთვის Android N და ზევით ვერსიებში.