diff --git a/.gitignore b/.gitignore index d71f6ea..c6b4501 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,6 @@ build/ .idea/ +.project +.classpath +.settings/ diff --git a/android/src/main/java/com/example/fluttershare/FlutterSharePlugin.java b/android/src/main/java/com/example/fluttershare/FlutterSharePlugin.java index 37cf79a..d3aa2e9 100644 --- a/android/src/main/java/com/example/fluttershare/FlutterSharePlugin.java +++ b/android/src/main/java/com/example/fluttershare/FlutterSharePlugin.java @@ -7,8 +7,12 @@ import androidx.core.content.FileProvider; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; + import java.io.File; import java.util.ArrayList; +import java.util.List; import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel; @@ -127,6 +131,16 @@ private void shareFile(MethodCall call, Result result) { intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); Intent chooserIntent = Intent.createChooser(intent, chooserTitle); + + + PackageManager packageManager = mRegistrar.context().getApplicationContext().getPackageManager(); + List resInfoList = packageManager.queryIntentActivities(chooserIntent, PackageManager.MATCH_DEFAULT_ONLY); + + for (ResolveInfo resolveInfo : resInfoList) { + String packageName = resolveInfo.activityInfo.packageName; + mRegistrar.context().getApplicationContext().grantUriPermission(packageName, fileUri, Intent.FLAG_GRANT_READ_URI_PERMISSION); + } + chooserIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); chooserIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mRegistrar.context().startActivity(chooserIntent);