清单文件:
<provider android:name="android.support.v4.content.FileProvider"
android:authorities="com.package.mygallary"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/paths" />
</provider>
paths.xml
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path name="files" path="files/" />
</paths>
活动类
public static final String AUTHORITY = "com.package.mygallary";
File imagePath = new File(getFilesDir(),"files");
File newFile = new
File(imagePath,name1.substring(ind2+1,name1.length()));
uri = FileProvider.getUriForFile(getApplicationContext(),AUTHORITY , newFile);
// getApplicationContext()。grantUriPermission(AUTHORITY,URI, // FLAG_GRANT_WRITE_URI_PERMISSION);
//getApplicationContext().grantUriPermission(AUTHORITY, uri, //FLAG_GRANT_READ_URI_PERMISSION );
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
ContentResolver contentResolver = getContentResolver();
MimeTypeMap mime = MimeTypeMap.getSingleton();
String type = contentResolver.getType(uri);
if (type == null) {
intent.setDataAndType(uri, "audio/*");
} else {
intent.setDataAndType(uri, type);
}
List<ResolveInfo> resInfoList = context.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo resolveInfo : resInfoList) {
String packageName = resolveInfo.activityInfo.packageName;
context.grantUriPermission(packageName, uri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
}
startActivityForResult(intent,Activity.RESULT_OK);
它给了toast mag:&#34;抱歉,无法打开文件&#34;
错误日志:
01-30 14:41:20.174 1584-1584/? E/MediaPlayer: setDataSource: SecurityException! uri=content://com.package.mygallary/files/JaSajanaTujhkoBhola(Raja).mp3
java.lang.SecurityException: Permission Denial: opening provider android.support.v4.content.FileProvider from ProcessRecord{423725c0 1584:com.android.music/u0a68} (pid=1584, uid=10068) that is not exported from uid 10308
at android.os.Parcel.readException(Parcel.java:1465)
at android.os.Parcel.readException(Parcel.java:1419)
at android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:2937)
at android.app.ActivityThread.acquireProvider(ActivityThread.java:4619)
at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2303)
at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1452)
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1073)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:929)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:856)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:905)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:881)
at com.android.music.AudioPreview$PreviewPlayer.setDataSourceAndPrepare(AudioPreview.java:587)
at com.android.music.AudioPreview.onCreate(AudioPreview.java:170)
at android.app.Activity.performCreate(Activity.java:5273)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2302)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5299)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:825)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:641)
at dalvik.system.NativeStart.main(Native Method)
01-30 14:41:20.178 158-16410/? E/MediaPlayerService: Couldn't open fd for content://com.package.mygallary/files/JaSajanaTujhkoBhola(Raja).mp3
01-30 14:41:20.178 1584-1584/? E/MediaPlayer: Unable to create media player
帮我解决这个问题......
答案 0 :(得分:1)
我想你忘了取得READ_EXTERNAL_STORAGE的许可