xamarin / Essentials

Xamarin.Essentials is no longer supported. Migrate your apps to .NET MAUI, which includes Maui.Essentials.
https://aka.ms/xamarin-upgrade
Other
1.52k stars 505 forks source link

[Bug] File Share java.lang.SecurityException #1988

Open pulmuone opened 2 years ago

pulmuone commented 2 years ago

Description

File Share java.lang.SecurityException

                await Share.RequestAsync(new ShareFileRequest
                {
                    Title = SelectedHeader.Title,
                    File = new ShareFile(path)
                });

[DatabaseUtils] Writing exception to parcel [DatabaseUtils] java.lang.SecurityException: Permission Denial: reading xamarin.essentials.fileProvider uri content://.fileProvider/internal_cache/%EC%9E%AC%EA%B3%A0%EC%A1%B0%EC%82%AC_2022-04-08.xlsx from pid=9048, uid=1000 requires the provider be exported, or grantUriPermission() [DatabaseUtils] at android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:912) [DatabaseUtils] at android.content.ContentProvider.semEnforceReadPermission(ContentProvider.java:830) [DatabaseUtils] at android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:708) [DatabaseUtils] at android.content.ContentProvider$Transport.query(ContentProvider.java:247) [DatabaseUtils] at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:107) [DatabaseUtils] at android.os.Binder.execTransactInternal(Binder.java:1215) [DatabaseUtils] at android.os.Binder.execTransact(Binder.java:1179) [DatabaseUtils] Writing exception to parcel [DatabaseUtils] java.lang.SecurityException: Permission Denial: reading xamarin.essentials.fileProvider uri content://.fileProvider/internal_cache/%EC%9E%AC%EA%B3%A0%EC%A1%B0%EC%82%AC_2022-04-08.xlsx from pid=9048, uid=1000 requires the provider be exported, or grantUriPermission() [DatabaseUtils] at android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:912) [DatabaseUtils] at android.content.ContentProvider.semEnforceReadPermission(ContentProvider.java:830) [DatabaseUtils] at android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:708) [DatabaseUtils] at android.content.ContentProvider$Transport.query(ContentProvider.java:247) [DatabaseUtils] at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:107) [DatabaseUtils] at android.content.ContentProviderNative.onTransact(Con04-08 08:10:55.428 E/DatabaseUtils( 8846): at android.os.Binder.execTransactInternal(Binder.java:1215) [DatabaseUtils] at android.os.Binder.execTransact(Binder.java:1179)

        //Android 11 
        IList<ResolveInfo> resInfoList = Android.App.Application.Context.PackageManager.QueryIntentActivities(intentShareFile, PackageInfoFlags.MatchDefaultOnly);
        foreach (ResolveInfo resInfo in resInfoList)
        {
            string packageName = resInfo.ActivityInfo.PackageName;
            Android.App.Application.Context.GrantUriPermission(packageName, uri, ActivityFlags.GrantReadUriPermission);
        }

Steps to Reproduce

Expected Behavior

Actual Behavior

Basic Information

Screenshots

Reproduction Link