Intentdə fayla link necə göndərilir?
sobes.tech Süni İntellekt
AI-dan cavab
Fayla keçidini Intent daxilində ötürmək üçün Uri istifadə olunur.
-
FileProvideristifadə etmək (Android N və yuxarı üçün tövsiyə olunan üsul):
Ən təhlükəsiz və tövsiyə olunan üsul, çünki bu, Android-un ən son versiyalarındaFileUriExposedException-u qarşısını alır.-
AndroidManifest.xmldaxilindəFileProvidertəyin edilməli və fayllara yolları göstərən XML faylı yaradılmalıdır. -
FileProvider.getUriForFile()istifadə edilərəkUrialınmalıdır. -
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> -
Köçürmə kodu:
// 'file' obyektinin java.io.File olduğunu fərz edirik Uri fileUri = FileProvider.getUriForFile( context, context.getPackageName() + ".provider", file ); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(fileUri, "application/pdf"); // Düzgün MIME tipini göstərin intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // Oxuma icazəsi verin if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); }
-
-
Uri.fromFile()istifadə etmək (Android N-dən etibarən köhnəlmiş):
Bu metod təhlükəsizlik problemləri səbəbindən Android N və daha yuxarı versiyalarda tövsiyə edilmir.-
Android N-dən etibarən,
Intentvasitəsilə fayl URI-larının ötürülməsiFileUriExposedException-a səbəb olur, çünki bu, digər tətbiqlərlə qarşılıqlı əlaqədə olur. -
Köçürmə kodu:
// 'file' obyektinin java.io.File olduğunu fərz edirik Uri fileUri = Uri.fromFile(file); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(fileUri, "application/pdf"); // Düzgün MIME tipini göstərin // Bu kod Android N+ da digər tətbiqlərlə qarşılıqlı əlaqədə `FileUriExposedException`-a səbəb ola bilər if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); }
-
Qısa cədvəl:
| Metod | Tövsiyə (Android N+) | Təhlükəsizlik |
|---|---|---|
FileProvider |
✅ | Yüksək ( FileUriExposedException-u qarşısını alır) |
Uri.fromFile() |
❌ | Aşağı ( FileUriExposedException-a səbəb ola bilər) |
Həmişə FileProvider istifadə edin, Android N və yuxarı versiyalarda tətbiqlər arasında fayl paylaşımı üçün.