마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

intent 값 전달 질문

0 추천
<food2.class>
public class food2 extends AppCompatActivity {

    Button scanbutton2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_food2);

        scanbutton2 = (Button)findViewById(R.id.scanbtn2);
      
        scanbutton2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
          Intent intent = new Intent(getApplicationContext(),BarcodeScanner2.class);
           startActivity(intent);
            }
        });
    }
}
<BarcodeScanner2.class>
public class BarcodeScanner2 extends AppCompatActivity implements ZXingScannerView.ResultHandler{

    int MY_PERMISSIONS_REQUEST_CAMERA=0;
    private ZXingScannerView scannerView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_food2);
    }

    @Override
    protected void onPause() {
        super.onPause();
        scannerView.stopCamera();
    }

    @Override
    public void handleResult(Result result) {
        try{
            if(!result.getText().equals("")){
                Intent intent = new Intent(getApplicationContext(),Health_check.class);
                intent.putExtra("result", String.valueOf(result));
                startActivity(intent);
            }
        }
        catch (Exception e){

        }finally {

        }
    }

    protected void onPostResume() {
        super.onPostResume();
        if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.CAMERA)
                != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA},
                    MY_PERMISSIONS_REQUEST_CAMERA);
        }
        scannerView.setResultHandler(this);
        scannerView.startCamera();
    }
}
<Health_check.class>
public class Health_check extends AppCompatActivity {

    public static TextView resulttextview2;
    PieChart pieChart;

    ImageButton hotbaButton;
    Button AddButton,buttontoast2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_health_check);

        resulttextview2 = findViewById(R.id.barcodetextview2);
        buttontoast2 = findViewById(R.id.buttontoast2);
        AddButton = findViewById(R.id.AddButton);
 
        buttontoast2.setOnClickListener(new View.OnClickListener() {
            TextView tx1 = (TextView)findViewById(R.id.textView1);
            @Override
            public void onClick(View view) {
                Intent intent = getIntent();
                String resulttextview2 = intent.getExtras().getString("result");
                tx1.setText(resulttextview2);
                Toast.makeText(Health_check.this,tx1.getText(), Toast.LENGTH_SHORT).show();
            }
        });
    }
}
food2에서 스캔버튼을 누르면 바코드 스캐너가 작동되게 만들었는데 여기서 스캐너가 켜지지도 않고 바로 닫혀버리네요 ,, 원래 의도는 바코드 스캐너에서 바코드를 스캔하면 그 결과는 Health_check.class 에서 뜨게 하려고 했는데 혹시 뭐가 잘못됐는지 아시는분 도와주세요 ㅠ__ㅜ
이민지렁이 (200 포인트) 님이 2020년 4월 3일 질문

1개의 답변

0 추천

카메라 권한 없을 경우 권한 요청하고        onRequestPermissionsResult 에서 권한 받은 이후 스캔을 진행하셔야 하는데, 권한 요청 이후 바로 스캔 요청 해서, 권한 오류로 동작 되지 않을 듯 합니다. 

빨간색 칠한 부분 같이 리턴 시켜주고 onRequestPermissionsResult 에서 권한 획득 이후 스캔 하게 변경 해 보세요.

 if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.CAMERA)
                != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA},
                    MY_PERMISSIONS_REQUEST_CAMERA);

            return; // 권한 받음 
        }
        scannerView.setResultHandler(this);
        scannerView.startCamera();

 

 

@Override

public void onRequestPermissionsResult(int requestCode,

    String[] permissions, int[] grantResults) {

switch (requestCode) {

    case MY_PERMISSIONS_REQUEST_CAMERA: {

        // If request is cancelled, the result arrays are empty.

        if (grantResults.length > 0

            && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

            // permission was granted, yay! Do the

            // contacts-related task you need to do.

scannerView.setResultHandler(this);

scannerView.startCamera();

        } else {

            // permission denied, boo! Disable the

            // functionality that depends on this permission.

        }

        return;

    }

}

 

 

 

익명사용자 님이 2020년 4월 7일 답변
...