Skip to content

Commit 9de8c3b

Browse files
committed
[BugFix]App will crash when sharing files on Android N or above.
1 parent a1ff935 commit 9de8c3b

File tree

4 files changed

+28
-0
lines changed

4 files changed

+28
-0
lines changed

app/src/main/AndroidManifest.xml

+10
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,16 @@
8181

8282
<service android:name=".component.UpdateService"/>
8383

84+
<provider
85+
android:name="android.support.v4.content.FileProvider"
86+
android:authorities="com.codeest.geeknews.fileprovider"
87+
android:grantUriPermissions="true"
88+
android:exported="false">
89+
<meta-data
90+
android:name="android.support.FILE_PROVIDER_PATHS"
91+
android:resource="@xml/fileprovidepaths" />
92+
</provider>
93+
8494
</application>
8595

8696
</manifest>

app/src/main/java/com/codeest/geeknews/app/Constants.java

+2
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ public class Constants {
4848

4949
public static final String BUGLY_ID = "257700f3f8";
5050

51+
public static final String FILE_PROVIDER_AUTHORITY="com.codeest.geeknews.fileprovider";
52+
5153
//================= PATH ====================
5254

5355
public static final String PATH_DATA = App.getInstance().getCacheDir().getAbsolutePath() + File.separator + "data";

app/src/main/java/com/codeest/geeknews/util/SystemUtil.java

+10
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
import android.net.ConnectivityManager;
99
import android.net.NetworkInfo;
1010
import android.net.Uri;
11+
import android.os.Build;
1112
import android.provider.MediaStore;
13+
import android.support.v4.content.FileProvider;
1214
import android.text.TextUtils;
1315
import android.view.View;
1416

@@ -80,6 +82,10 @@ public static Uri saveBitmapToFile(Context context, String url, Bitmap bitmap,Vi
8082
File imageFile = new File(fileDir,fileName);
8183
Uri uri = Uri.fromFile(imageFile);
8284
if (isShare && imageFile.exists()) {
85+
if (Build.VERSION.SDK_INT >= 24) {
86+
uri = FileProvider.getUriForFile(context.getApplicationContext(),
87+
Constants.FILE_PROVIDER_AUTHORITY, imageFile);
88+
}
8389
return uri;
8490
}
8591
try {
@@ -102,6 +108,10 @@ public static Uri saveBitmapToFile(Context context, String url, Bitmap bitmap,Vi
102108
e.printStackTrace();
103109
}
104110
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,uri));
111+
if (Build.VERSION.SDK_INT >= 24) {
112+
uri = FileProvider.getUriForFile(context.getApplicationContext(),
113+
Constants.FILE_PROVIDER_AUTHORITY, imageFile);
114+
}
105115
return uri;
106116
}
107117

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<paths>
3+
<external-path
4+
name="files_path"
5+
path="codeest/GeekNews/" />
6+
</paths>

0 commit comments

Comments
 (0)