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