这两天踩得坑记录一下。
最近一个项目,经理要用一个外设ar眼镜取代手机原始相机,拍照然后保存都冒的问题,但是删除照片的时候出问题,在此记录一下。
方法就是直接使用uri删除,千万不要使用uri查找照片的路径然后再删除,因为找不到!!!注意要判断一下是不是android7.0以上的系统.。
关键代码:
Uri uri = data.getData();
if (Build.VERSION.SDK_INT >= 24) {
getContentResolver().delete(uri, null, null);
} else {
File file = new File(FileUtils.getRealFilePath(CameraGlassActivity.this,uri));
if (file.exists()){
file.delete();
}
}
public static String getRealFilePath( Context context, Uri uri ) { if ( null == uri ) return null; final String scheme = uri.getScheme(); String data = null; if ( scheme == null ) { data = uri.getPath(); } else if ( ContentResolver.SCHEME_FILE.equals( scheme ) ) { data = uri.getPath(); } else if ( ContentResolver.SCHEME_CONTENT.equals( scheme ) ) { Cursor cursor = context.getContentResolver().query( uri, new String[] { MediaStore.Images.ImageColumns.DATA }, null, null, null ); if ( null != cursor ) { if ( cursor.moveToFirst() ) { int index = cursor.getColumnIndex( MediaStore.Images.ImageColumns.DATA ); if ( index > -1 ) { data = cursor.getString( index ); } } cursor.close(); } } return data; }