![](/img/trans.png)
[英]data intent equal null in onActivityResult(int requestCode, int resultCode, Intent data) when i make facebook login
[英]How can I get a result from an onActivityResult(int requestCode, int resultCode, Intent data)?
我正在開發一個允許用戶使用相機拍照的Android項目。
我的方法看起來像這樣:
private void takePicture(){
Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(camera, 1337);
}
在我的onActivityResult中,我拍攝照片並將其存儲在我的SdCard中。 我試圖修改我的takePicture()函數來返回圖片的路徑(String而不是void)。
我已經知道java.io.File中的getPath()允許我這樣做。
所以我的問題是:如何修改我的函數以返回圖片的路徑?
takePicture
將無法返回路徑,因為它將在您的意圖完成之前返回。 你需要對onActivityResult
的路徑做一些事情
以下是獲取pictureCallback中捕獲和存儲圖像路徑的代碼
在這段代碼中, mFilePath
是保存圖像路徑的字符串......
PictureCallback mPicture = new PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
File pictureFile = getOutputMediaFile();
if (pictureFile == null) {
return;
}
try {
FileOutputStream fos = new FileOutputStream(pictureFile);
fos.write(data);
fos.close();
String mFilePath = pictureFile.getAbsolutePath();
} catch (FileNotFoundException e) {
} catch (IOException e) {
}
}
};
private static File getOutputMediaFile() {
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;
mediaFile = new File(mediaStorageDir.getPath() + File.separator + "IMG_" + timeStamp + ".jpg");
return mediaFile;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.