Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在react-native中实现摄像机本机模块_Java_Android_React Native_React Native Android - Fatal编程技术网

Java 在react-native中实现摄像机本机模块

Java 在react-native中实现摄像机本机模块,java,android,react-native,react-native-android,Java,Android,React Native,React Native Android,由于某些原因,我不应该在我的应用程序中使用android.permission.CAMERA。因此,我不能使用react native image picker library。因此,我正在实施一个CAMERA native模块,以便拍摄照片并将其发送到服务器,因为我是一名初级RN开发人员。我在模块类中用于启动意图的代码如下所示: class CameraModule extends ReactContextBaseJavaModule { static final int REQUES

由于某些原因,我不应该在我的应用程序中使用android.permission.CAMERA。因此,我不能使用react native image picker library。因此,我正在实施一个CAMERA native模块,以便拍摄照片并将其发送到服务器,因为我是一名初级RN开发人员。我在模块类中用于启动意图的代码如下所示:

class CameraModule extends ReactContextBaseJavaModule {
    static final int REQUEST_IMAGE_CAPTURE = 1;

    Activity activity;

    CameraModule(ReactApplicationContext reactContext) {
        super(reactContext);
        this.activity=activity;
    }

    @Override
    public String getName() {
        return "Camera";
    }

    @ReactMethod
    public void onClick() {
           ReactApplicationContext context = getReactApplicationContext();     
            Context context;
            Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            cameraIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            if(cameraIntent.resolveActivity(context.getPackageManager()) !=null) {
                activity.startActivityForResult(cameraIntent,REQUEST_IMAGE_CAPTURE); 
            }         
        }

            
    }
在此之后,我必须为onActivityResult编写代码,以获得最终图像。但在这个层次上,我得到了错误

尝试在空对象引用上调用虚拟方法“void android.app.Activity.startActivityForResult(android.content.Intent,int)”


有什么想法吗?

这段代码应该可以用。但是,如果你不请求权限,它将不起作用


class CameraModule extends ReactContextBaseJavaModule {
    static final int REQUEST_IMAGE_CAPTURE = 1;

    Activity activity;

    CameraModule(ReactApplicationContext reactContext) {
        super(reactContext);
        this.activity=reactContext.getCurrentActivity();
    }

    @Override
    public String getName() {
        return "Camera";
    }

    @ReactMethod
    public void onClick() {
           ReactApplicationContext context = getReactApplicationContext();     
            Context context;
            Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            cameraIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            if(cameraIntent.resolveActivity(context.getPackageManager()) !=null) {
                
              activity.startActivityForResult(cameraIntent,REQUEST_IMAGE_CAPTURE); 
            }         
        }

            
    }
问题解决了! 我刚刚更换了这个部件:

activity.startActivityForResult(cameraIntent,REQUEST_IMAGE_CAPTURE)
关于这一点:

takePictureIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(takePictureIntent);