URI获取
2021-05-24 本文已影响0人
霁逸lei
1.android7.0后方法有变
public static Uri getUri(Context context, String url){
File tempFile = new File(url);
//判断版本
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //如果在Android7.0以上,使用FileProvider获取Uri
try{
return FileProvider.getUriForFile(context, context.getPackageName(), tempFile);
}catch (Exception e){
e.printStackTrace();
}
} else { //否则使用Uri.fromFile(file)方法获取Uri
return Uri.fromFile(tempFile);
}
return null;
}
//7.0以后需要配置相关manifest[关于 Android 7.0 适配中 FileProvider 部分的总结_滴水穿石,点石为金-CSDN博客](https://blog.csdn.net/growing_tree/article/details/71190741)
Uri uriForFile = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".silicompressor.provider", file);
<provider
android:name=".provider.GenericFileProvider"
android:authorities="${applicationId}.silicompressor.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
2.通过provider
private static Uri getVideoContentUri(Context context, File videoFile) {
String filePath = videoFile.getAbsolutePath();
Cursor cursor = context.getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
new String[]{MediaStore.Video.Media._ID,MediaStore.MediaColumns.DATA}, MediaStore.Video.Media.DATA + "=? ",
new String[]{filePath}, MediaStore.Video.Media.DEFAULT_SORT_ORDER);
if (cursor != null && cursor.moveToFirst()) {
int id = cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns._ID));
String string = cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DATA));
Log.d(TAG, "id:" + id + "===" + string);
Uri baseUri = Uri.parse("content://media/external/video/media");
return Uri.withAppendedPath(baseUri, "" + id);
} else {
if (videoFile.exists()) {
ContentValues values = new ContentValues();
values.put(MediaStore.Video.Media.DATA, filePath);
return context.getContentResolver().insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values);
} else {
return null;
}
}
}
private void getUri(File videoFile) {
String filePath = videoFile.getAbsolutePath();
Uri mUri = Uri.parse("content://media/external/video/media");
Uri mImageUri = null;
Cursor cursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Images.Media.DEFAULT_SORT_ORDER);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
String data = cursor.getString(cursor
.getColumnIndex(MediaStore.MediaColumns.DATA));
if (filePath.equals(data)) {
int ringtoneID = cursor.getInt(cursor
.getColumnIndex(MediaStore.MediaColumns._ID));
Log.d(TAG, "ringtoneID:" + ringtoneID);
mImageUri = Uri.withAppendedPath(mUri, ""
+ ringtoneID);
break;
}
cursor.moveToNext();
}
}