Camera始终将resultCode返回为0

Akh*_*air 11 android

我正在尝试使用我的Android应用程序中的相机开发.

问题是相机总是返回结果代码0,无论我是按完还是取消.我使用的代码片段如下:

protected void startCameraActivity()
{

    Log.i("MakeMachine", "startCameraActivity()" );

    File file = new File( _path );
    Uri outputFileUri = Uri.fromFile( file );

    Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra( MediaStore.EXTRA_OUTPUT, outputFileUri );
    startActivityForResult(intent, 0);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{   

    Log.i( "MakeMachine", "resultCode: " + resultCode );

    switch( resultCode )
    {
        case 0:
            Log.i( "MakeMachine", "User cancelled" );
            break;

        case -1:
            Log.i( "MakeMachine", "User done" );
            onPhotoTaken();
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

logcat显示:

05-31 14:58:15.367: E/asset(29114): MAS: getAppPckgAndVerCode package: makemachine.android.examples === version 1
05-31 14:58:15.398: D/dalvikvm(29114): Trying to load lib lib_glossary.so 0x0
05-31 14:58:15.414: D/dalvikvm(29114): Added shared lib lib_glossary.so 0x0
05-31 14:58:26.125: I/MakeMachine(29114): ButtonClickHandler.onClick()
05-31 14:58:26.125: I/MakeMachine(29114): startCameraActivity()
05-31 14:58:26.507: W/IInputConnectionWrapper(29114): showStatusIcon on inactive InputConnection
05-31 14:58:36.375: I/MakeMachine(29114): User cancelled
05-31 14:58:36.375: I/MakeMachine(29114): resultCode: 0
05-31 14:58:50.945: I/MakeMachine(29114): ButtonClickHandler.onClick()
05-31 14:58:50.945: I/MakeMachine(29114): startCameraActivity()
05-31 14:58:51.429: W/IInputConnectionWrapper(29114): showStatusIcon on inactive InputConnection
05-31 14:59:01.554: I/MakeMachine(29114): User cancelled
05-31 14:59:01.554: I/MakeMachine(29114): resultCode: 0
Run Code Online (Sandbox Code Playgroud)

bab*_*bay 10

问题(在 android >= 5.0 中)可能与singleInstance模式有关。

如果您将活动launchMode设置为singleInstance,那么在 android < 5.0 中,您将立即收到取消的结果。在 android >=5.0 中,您将拥有resultCode == Activity.RESULT_CANCELED.

尝试使用launchMode = singleTask. 它很像singleInstance,但允许在任务上启动其他活动。

更多信息在这里:https : //developer.android.com/guide/topics/manifest/activity-element.html#lmode


And*_*ter 7

根据评论部分,resultCode返回0(意味着结果被取消)的原因是因为在拍照保存到SD卡时,您需要向WRITE_EXTERNAL_STORAGE清单添加权限.