![](/img/trans.png)
[英]Unhandled promise rejection when using Native Modules from React Native after implementing native Toast module
[英]implementing camera native module in react native
由於某些原因,我不應該在我的應用程序中使用 android.permission.CAMERA。所以我不能使用 react-native-image-picker 庫。因此我正在實現一個相機本機模塊,以便拍照並將它們發送到服務器,因為我我是一名初級 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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.