我试图做一个简单的应用程序,使用手机相机,所以我跟着这个tutorial 基本上我有一个上点击启动相机晶圆厂,这是结果:startActivityForResult不触发onActivityResult
它启动相机,因为它应该...
如果我关闭相机它打印“REQUEST_PHOTO”和“活动结束”,但如果我拍张照片,然后点击鼠标右键,接受它没有任何反应。该按钮不起作用,onActivityResult方法未被调用。
在这里,你可以看到在onActivityResult方法日志代码的相关部分:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
if(hasCamera()) {
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
launchCamera();
}
});
}
}
...
private void launchCamera() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
...
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
...
photoURI = FileProvider.getUriForFile(...);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQUEST_TAKE_PHOTO:
Log.d("DEBUG", "REQUEST_PHOTO");
if (resultCode == RESULT_OK) {
Log.d("DEBUG", "REQUEST_PHOTO RESULT_OK");
}
break;
}
Log.d("DEBUG", "ACTIVITY FINISHED");
}
}
不仅我不理解为什么该方法不被调用,接受按钮被“封锁“但我也不明白为什么只有按下退出按钮时才调用该方法。
有什么想法?
谢谢!
哪个版本的设备正在测试此代码。希望你有棉花糖版本之后所有必要的许可,并且有必须由用户授予的危险许可。 –
在将URI传递给相机应用程序之前,您是否创建了该文件? – makovkastar
@makovkastar我创建的文件就像[tutorial](https://developer.android.com/training/camera/photobasics.html)说的那样(createImageFile()函数) –