Pho Tran
Committed by David PHAM-VAN

fixed permission denial while sharing file with fileprovider

@@ -19,32 +19,19 @@ package net.nfet.flutter.printing; @@ -19,32 +19,19 @@ package net.nfet.flutter.printing;
19 import android.content.Context; 19 import android.content.Context;
20 import android.content.Intent; 20 import android.content.Intent;
21 import android.content.res.Configuration; 21 import android.content.res.Configuration;
22 -import android.graphics.Bitmap;  
23 -import android.graphics.Matrix;  
24 -import android.graphics.pdf.PdfRenderer;  
25 import android.net.Uri; 22 import android.net.Uri;
26 -import android.os.Build;  
27 import android.os.Bundle; 23 import android.os.Bundle;
28 import android.os.CancellationSignal; 24 import android.os.CancellationSignal;
29 -import android.os.Handler;  
30 -import android.os.Looper;  
31 import android.os.ParcelFileDescriptor; 25 import android.os.ParcelFileDescriptor;
32 import android.print.PageRange; 26 import android.print.PageRange;
33 import android.print.PdfConvert; 27 import android.print.PdfConvert;
34 import android.print.PrintAttributes; 28 import android.print.PrintAttributes;
35 -import android.print.PrintDocumentAdapter;  
36 -import android.print.PrintDocumentInfo;  
37 import android.print.PrintJob; 29 import android.print.PrintJob;
38 -import android.print.PrintJobInfo;  
39 import android.print.PrintManager; 30 import android.print.PrintManager;
40 -import android.util.Log;  
41 import android.webkit.WebView; 31 import android.webkit.WebView;
42 import android.webkit.WebViewClient; 32 import android.webkit.WebViewClient;
43 -  
44 import androidx.annotation.NonNull; 33 import androidx.annotation.NonNull;
45 -import androidx.annotation.RequiresApi;  
46 import androidx.core.content.FileProvider; 34 import androidx.core.content.FileProvider;
47 -  
48 import java.io.File; 35 import java.io.File;
49 import java.io.FileInputStream; 36 import java.io.FileInputStream;
50 import java.io.FileOutputStream; 37 import java.io.FileOutputStream;
@@ -52,6 +39,12 @@ import java.io.IOException; @@ -52,6 +39,12 @@ import java.io.IOException;
52 import java.io.OutputStream; 39 import java.io.OutputStream;
53 import java.nio.ByteBuffer; 40 import java.nio.ByteBuffer;
54 import java.util.HashMap; 41 import java.util.HashMap;
  42 +import android.content.pm.PackageManager;
  43 +import android.content.pm.ProviderInfo;
  44 +import android.content.pm.ResolveInfo;
  45 +import java.util.List;
  46 +
  47 +
55 48
56 /** 49 /**
57 * PrintJob 50 * PrintJob
@@ -223,6 +216,12 @@ public class PrintingJob extends PrintDocumentAdapter { @@ -223,6 +216,12 @@ public class PrintingJob extends PrintDocumentAdapter {
223 shareIntent.putExtra(Intent.EXTRA_STREAM, apkURI); 216 shareIntent.putExtra(Intent.EXTRA_STREAM, apkURI);
224 shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 217 shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
225 Intent chooserIntent = Intent.createChooser(shareIntent, null); 218 Intent chooserIntent = Intent.createChooser(shareIntent, null);
  219 + List<ResolveInfo> resInfoList = context.getPackageManager().queryIntentActivities(chooserIntent, PackageManager.MATCH_DEFAULT_ONLY);
  220 +
  221 + for (ResolveInfo resolveInfo : resInfoList) {
  222 + String packageName = resolveInfo.activityInfo.packageName;
  223 + context.grantUriPermission(packageName, apkURI, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
  224 + }
226 context.startActivity(chooserIntent); 225 context.startActivity(chooserIntent);
227 shareFile.deleteOnExit(); 226 shareFile.deleteOnExit();
228 } catch (IOException e) { 227 } catch (IOException e) {