| 
				
			 | 
			
			
				@@ -3,7 +3,10 @@ package com.RNFetchBlob; 
			 | 
		
	
		
			
			| 
				3
			 | 
			
				3
			 | 
			
			
				 import android.app.Activity; 
			 | 
		
	
		
			
			| 
				4
			 | 
			
				4
			 | 
			
			
				 import android.app.DownloadManager; 
			 | 
		
	
		
			
			| 
				5
			 | 
			
				5
			 | 
			
			
				 import android.content.Intent; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				6
			 | 
			
			
				+import android.content.pm.PackageManager; 
			 | 
		
	
		
			
			| 
				6
			 | 
			
				7
			 | 
			
			
				 import android.net.Uri; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				8
			 | 
			
			
				+import android.os.Build; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				9
			 | 
			
			
				+import android.support.v4.content.FileProvider; 
			 | 
		
	
		
			
			| 
				7
			 | 
			
				10
			 | 
			
			
				 import android.util.SparseArray; 
			 | 
		
	
		
			
			| 
				8
			 | 
			
				11
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				9
			 | 
			
				12
			 | 
			
			
				 import com.facebook.react.bridge.ActivityEventListener; 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -24,6 +27,7 @@ import com.facebook.react.modules.network.OkHttpClientProvider; 
			 | 
		
	
		
			
			| 
				24
			 | 
			
				27
			 | 
			
			
				 import okhttp3.OkHttpClient; 
			 | 
		
	
		
			
			| 
				25
			 | 
			
				28
			 | 
			
			
				 import okhttp3.JavaNetCookieJar; 
			 | 
		
	
		
			
			| 
				26
			 | 
			
				29
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				
			 | 
			
				30
			 | 
			
			
				+import java.io.File; 
			 | 
		
	
		
			
			| 
				27
			 | 
			
				31
			 | 
			
			
				 import java.util.HashMap; 
			 | 
		
	
		
			
			| 
				28
			 | 
			
				32
			 | 
			
			
				 import java.util.Map; 
			 | 
		
	
		
			
			| 
				29
			 | 
			
				33
			 | 
			
			
				 import java.util.concurrent.LinkedBlockingQueue; 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -105,10 +109,29 @@ public class RNFetchBlob extends ReactContextBaseJavaModule { 
			 | 
		
	
		
			
			| 
				105
			 | 
			
				109
			 | 
			
			
				     @ReactMethod 
			 | 
		
	
		
			
			| 
				106
			 | 
			
				110
			 | 
			
			
				     public void actionViewIntent(String path, String mime, final Promise promise) { 
			 | 
		
	
		
			
			| 
				107
			 | 
			
				111
			 | 
			
			
				         try { 
			 | 
		
	
		
			
			| 
				108
			 | 
			
				
			 | 
			
			
				-            Intent intent= new Intent(Intent.ACTION_VIEW) 
			 | 
		
	
		
			
			| 
				109
			 | 
			
				
			 | 
			
			
				-                    .setDataAndType(Uri.parse("file://" + path), mime); 
			 | 
		
	
		
			
			| 
				110
			 | 
			
				
			 | 
			
			
				-            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
			 | 
		
	
		
			
			| 
				111
			 | 
			
				
			 | 
			
			
				-            this.getReactApplicationContext().startActivity(intent); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				112
			 | 
			
			
				+            Uri uriForFile = FileProvider.getUriForFile(getCurrentActivity(), 
			 | 
		
	
		
			
			| 
				
			 | 
			
				113
			 | 
			
			
				+                    this.getReactApplicationContext().getPackageName() + ".provider", new File(path)); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				114
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				115
			 | 
			
			
				+            if (Build.VERSION.SDK_INT >= 24) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				116
			 | 
			
			
				+                // Create the intent with data and type 
			 | 
		
	
		
			
			| 
				
			 | 
			
				117
			 | 
			
			
				+                Intent intent = new Intent(Intent.ACTION_VIEW) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				118
			 | 
			
			
				+                        .setDataAndType(uriForFile, mime); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				119
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				120
			 | 
			
			
				+                // Set flag to give temporary permission to external app to use FileProvider 
			 | 
		
	
		
			
			| 
				
			 | 
			
				121
			 | 
			
			
				+                intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				122
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				123
			 | 
			
			
				+                // Validate that the device can open the file 
			 | 
		
	
		
			
			| 
				
			 | 
			
				124
			 | 
			
			
				+                PackageManager pm = getCurrentActivity().getPackageManager(); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				125
			 | 
			
			
				+                if (intent.resolveActivity(pm) != null) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				126
			 | 
			
			
				+                    this.getReactApplicationContext().startActivity(intent); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				127
			 | 
			
			
				+                } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				128
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				129
			 | 
			
			
				+            } else { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				130
			 | 
			
			
				+                Intent intent = new Intent(Intent.ACTION_VIEW) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				131
			 | 
			
			
				+                        .setDataAndType(Uri.parse("file://" + path), mime).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				132
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				133
			 | 
			
			
				+                this.getReactApplicationContext().startActivity(intent); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				134
			 | 
			
			
				+            } 
			 | 
		
	
		
			
			| 
				112
			 | 
			
				135
			 | 
			
			
				             ActionViewVisible = true; 
			 | 
		
	
		
			
			| 
				113
			 | 
			
				136
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				114
			 | 
			
				137
			 | 
			
			
				             final LifecycleEventListener listener = new LifecycleEventListener() { 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -382,4 +405,4 @@ public class RNFetchBlob extends ReactContextBaseJavaModule { 
			 | 
		
	
		
			
			| 
				382
			 | 
			
				405
			 | 
			
			
				     public void getSDCardApplicationDir(Promise promise) { 
			 | 
		
	
		
			
			| 
				383
			 | 
			
				406
			 | 
			
			
				         RNFetchBlobFS.getSDCardApplicationDir(this.getReactApplicationContext(), promise); 
			 | 
		
	
		
			
			| 
				384
			 | 
			
				407
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				385
			 | 
			
				
			 | 
			
			
				-} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				408
			 | 
			
			
				+} 
			 |