我已经阅读了很多关于这个问题的问题。有些与我正在经历的相似;我尝试了没有成功的答案。该代码适用于 HTC Android 4.2,不适用于 Nexus 7 Android 4.4。我已经修改了存储目录以在 android 4.4 上工作,所以这不是问题。
如果我使用,相机 Intent 永远不会返回
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
如果我使用的话确实会返回
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoFile);
但它不保存文件。
这是完整的代码。 调用 Intent
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(manager) != null)
{
try
{
final File photoFile = createImageFile();
if (photoFile != null)
{
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
//takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoFile);
startActivityForResult(takePictureIntent, 1);
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
文件名
private File createImageFile() throws IOException
{
if (mStorageDirectory == null)
{
createInitialStorageDirectory();
setupFolders();
mScrollList.notifyDataSetInvalidated();
}
// Create an image file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "slide_" + timeStamp;
File storageDir = new File(mStorageDirectory);
File image = File.createTempFile(imageFileName, ".jpg", storageDir);
// image.setWritable(true, false);
// Save a path for use with ACTION_VIEW intents
mCurrentPhotoPath = image.getAbsolutePath();
return image;
}
回调函数
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == -1)
{
}
}
根目录加保存目录
static String mBasePath = "/slides/";
private String getRootDirectory()
{
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state))
{
if (Build.VERSION.SDK_INT >= 19)
return mView.getContext().getFilesDir() + mBasePath;
else
return Environment.getExternalStorageDirectory() + "/Android/data/com.hdms.manager" + mBasePath;
//return Environment.getExternalStorageDirectory() + mBasePath;
}
return mBasePath;
}
如有任何想法,我们将不胜感激。
最佳答案
在我的例子中,它没有返回,因为输出文件位于我尚未创建的文件夹中。
如果是其他人的情况,请在开始 Intent 之前执行此操作:
file.getParentFile().mkdirs();
关于android - Camera Intent 未返回调用 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24503968/