簡體   English   中英

在本機反應中實現相機本機模塊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM