소스 검색

RA Image Android

Android 7.0拍照闪退
Ray Zhang 9 년 전
부모
커밋
878bad7afc
1개의 변경된 파일28개의 추가작업 그리고 1개의 파일을 삭제
  1. 28 1
      RA Image/app/src/main/java/com/usai/redant/raimage/MainActivity.java

+ 28 - 1
RA Image/app/src/main/java/com/usai/redant/raimage/MainActivity.java

@@ -13,6 +13,7 @@ import com.usai.util.Network;
 import com.usai.util.dbUtil;
 import com.usai.util.dbgUtil;
 
+import android.database.Cursor;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.media.ThumbnailUtils;
@@ -191,12 +192,38 @@ public class MainActivity extends AppCompatActivity
 			{
 				Log.i(TAG, "start system camera====================>");
 				takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
-						Uri.fromFile(photoFile));
+                        getImageContentUri(this,photoFile)/*Uri.fromFile(photoFile)*/);
 				startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
 			}
 		}
 	}
 
+    private Uri getImageContentUri(Context context, File imageFile) {
+        String filePath = imageFile.getAbsolutePath();
+        Cursor cursor = context.getContentResolver().query(
+                MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
+                new String[] { MediaStore.Images.Media._ID },
+                MediaStore.Images.Media.DATA + "=? ",
+                new String[] { filePath }, null);
+
+        if (cursor != null && cursor.moveToFirst()) {
+            int id = cursor.getInt(cursor
+                    .getColumnIndex(MediaStore.MediaColumns._ID));
+            Uri baseUri = Uri.parse("content://media/external/images/media");
+            return Uri.withAppendedPath(baseUri, "" + id);
+        } else {
+            if (imageFile.exists()) {
+                ContentValues values = new ContentValues();
+                values.put(MediaStore.Images.Media.DATA, filePath);
+                return context.getContentResolver().insert(
+                        MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
+            } else {
+                return null;
+            }
+        }
+    }
+
+
 	@Override
 	public boolean onKeyDown(int keyCode, KeyEvent event)
 	{