Java 拍照后未调用onActivityResult
如何知道这个主题是有很好的文档记录的,我在这个问题上读了很多书,但我仍然有以下问题:当我用我的应用程序拍照并点击“验证”按钮时,什么都没有发生。我所做的目的是:传递给onActivityReult函数的不仅仅是缩略图,还有相机拍摄的“整个”照片 以下是为“拍照”按钮定义的侦听器: 这是onActivityResult方法。。。从未调用(并且未在onClickListener方法中声明): 但是,正如标题中所说,onActivityResult不被称为。你能找出原因吗?因为我已经尝试了我在这个主题上找到的几乎所有东西,但我应该错过一些东西Java 拍照后未调用onActivityResult,java,android,android-camera,Java,Android,Android Camera,如何知道这个主题是有很好的文档记录的,我在这个问题上读了很多书,但我仍然有以下问题:当我用我的应用程序拍照并点击“验证”按钮时,什么都没有发生。我所做的目的是:传递给onActivityReult函数的不仅仅是缩略图,还有相机拍摄的“整个”照片 以下是为“拍照”按钮定义的侦听器: 这是onActivityResult方法。。。从未调用(并且未在onClickListener方法中声明): 但是,正如标题中所说,onActivityResult不被称为。你能找出原因吗?因为我已经尝试了我在这个主题
谢谢 代码中不清楚,但可以在
onClickListener
中声明onActivityResult
。如果这是真的,你需要移动它。
看看这个答案:
检查您是否在
AndroidManifest.xml
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
好的,为了解决这个问题,我使用了一些“技巧”,在这里详细介绍:
@Override
public void onClick(View v) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "CameraTest");
mediaStorageDir.mkdir(); // make sure you got this folder
Log.i("Report",mediaStorageDir.toString());
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File mediaFile = new File(mediaStorageDir.getPath() + File.separator + "IMG_"+ timeStamp + ".jpg");
try
{
//create directories and the file
mediaFile.getParentFile().mkdirs();
mediaFile.createNewFile();
} catch (IOException e) {
Log.e("Report", "create error for file "+mediaFile);
e.printStackTrace();
}
tmpFilePath = mediaFile.getPath();
mFileUri = Uri.fromFile(mediaFile);
Log.i("Report","Uri: "+mFileUri);
intent.putExtra(MediaStore.EXTRA_OUTPUT, mFileUri);
startActivityForResult(intent, CAMERA_PIC_REQUEST);
}
});
然后,我在onActivityResult函数中使用该方法恢复存储在tmpFilePath中的文件:
Bitmap image = BitmapFactory.decodeFile(this.tmpFilePath);
而且。。。很好用。在将文件发送到WS时,我仍然存在一些问题,但这段代码已经解决了这个问题。谢谢你的帮助,你让我走上了正轨:)你确定没有人叫它吗?你用调试器检查过了吗?onActivityResult方法的第一行是打印,我在logcatI中没有任何内容,因为logcat有时会漏掉消息。同意@ronNemmondommegavezetéknevem。检查是否打印了其他logcat消息。请删除super.onActivityResult(请求代码、结果代码、数据);(第2行)从onActivityResult()函数中。不,onActivityResult方法未在onClickListener中声明:)我有这些行,据我所知,文件必须存在才能拍照,因此,请尝试一下上面的代码:)-我进一步更新了它,以提供一个现有的目录来创建文件只是一个问题:如何初始化puc_文件?这是对代码的补充。把它放在新文件的正下方(照片,“puc_img.jpg”)代码>rrraaah。好啊这就是我所做的。因为我只是使用photo var,所以我删除了所有出现的puc_img。我在基本问题中相应地编辑了代码。但现在,我仍然无法触发onActivityResult方法。我做错了什么?
try
{
//create directories and the file
puc_file.getParentFile().mkdirs();
puc_file.createNewFile();
} catch (IOException e) { }
@Override
public void onClick(View v) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "CameraTest");
mediaStorageDir.mkdir(); // make sure you got this folder
Log.i("Report",mediaStorageDir.toString());
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File mediaFile = new File(mediaStorageDir.getPath() + File.separator + "IMG_"+ timeStamp + ".jpg");
try
{
//create directories and the file
mediaFile.getParentFile().mkdirs();
mediaFile.createNewFile();
} catch (IOException e) {
Log.e("Report", "create error for file "+mediaFile);
e.printStackTrace();
}
tmpFilePath = mediaFile.getPath();
mFileUri = Uri.fromFile(mediaFile);
Log.i("Report","Uri: "+mFileUri);
intent.putExtra(MediaStore.EXTRA_OUTPUT, mFileUri);
startActivityForResult(intent, CAMERA_PIC_REQUEST);
}
});
Bitmap image = BitmapFactory.decodeFile(this.tmpFilePath);