我创建了一个活动,它使用默认的相机应用程序拍照。我使用了本教程中的代码:https://developer.android.com/training/camera/photobasics#taskpath
我创造了这样的意图:
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
然后我设置输出的路径:
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, currentPhotoPath);
在教程中,它们保存 currentPhotoPath
活动中的私有变量。我想避免这一点,并从中的意图得到路径 onActivityResult
函数,此处:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (requestCode == REQUEST_TAKE_PHOTO && resultCode == RESULT_OK) {
// How to access the path here?
}
}
我试过了 intent.getStringExtra(MediaStore.EXTRA_OUTPUT)
,但返回null。
我希望避免将路径存储在类成员中,因为android系统可能会销毁并重新创建活动,然后该变量将为null。
我发现了一个类似的问题,但答案是针对android2的,它们使用了不推荐的api,比如 managedQuery
.
1条答案
按热度按时间ozxc1zmp1#
我想避免这种情况,并从onactivityresult函数的intent获取路径,在这里
那是不可能的,对不起。它需要重写每一个相机应用程序。
我希望避免将路径存储在类成员中,因为android系统可能会销毁并重新创建活动,然后该变量将为null。
将其保存到已保存的示例状态
Bundle
. 这个示例应用程序有点旧,但它演示了基本技术。保存File
在onSaveInstanceState()
:…把它放回去
onCreate()
,如果savedInstanceState
Bundle
不是null
: