0
我是Android應用程序開發的新手。我正在嘗試使用Intents拍攝照片。一切正常,我可以拍照並將其保存到外部存儲器,但我無法獲得它保存的位置。 這裏是我的onCreate方法:onActivityResult的數據始終爲空
private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 100;
public static final int MEDIA_TYPE_IMAGE = 1;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Uri fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
}
在這裏,我創建的路徑保存圖片:
private static Uri getOutputMediaFileUri(int type){
return Uri.fromFile(getOutputMediaFile(type));
}
private static File getOutputMediaFile(int type){
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "MyCameraApp");
if (! mediaStorageDir.exists()){
if (! mediaStorageDir.mkdirs()){
Log.d("MyCameraApp", "failed to create directory");
return null;
}
}
// Create a media file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File mediaFile;
if (type == MEDIA_TYPE_IMAGE){
mediaFile = new File(mediaStorageDir.getPath() + File.separator +
"IMG_"+ timeStamp + ".jpg");
} else {
return null;
}
return mediaFile;
}
圖像保存在指定的路徑,但在onActivityResult
數據爲null,我可以」噸得到的路徑:
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE)
{
if(resultCode == RESULT_OK){
Toast.makeText(this, "Video saved to:\n" +data.getData(), Toast.LENGTH_LONG).show();
}
}
}
也許你的相機返回'URI'而不是'數據'? – Skynet 2013-03-05 11:23:37
片段或活動中的OnActivityResult方法?如果它在一個片段中,則嘗試將其設置在活動中,並查看它是否有效。 – Luciano 2013-03-05 11:34:06
@Luizje - > no,在活動中。謝謝 – saeed 2013-03-05 12:13:20