2017-10-18 6 views
0

私は単純な機能をしようとしています。ユーザーがカメラの許可を受けた後、新しい活動を開く必要がありますが、どうすればいいですか?アクティビティを受け入れると、アクティビティを開く方法は?

これはコードです。私は許可を確認し、それを要求する。もし私が新しい活動を開くなら、私の他に。

@RequiresApi(api = Build.VERSION_CODES.M) 
    @OnClick(R.id.scanButton) 
    void scanZxing(View view) { 
     if(getActivity().checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED){ 
      Toast.makeText(context, "We need permissions to acces your CAMERA!", Toast.LENGTH_SHORT).show(); 
      ((MainActivity) context).checkCameraPermission(); 


     } else if (view.getId() == R.id.scanButton) { 
      Intent intent = new Intent(getActivity(), ScanBarcodeActvity.class); 
      startActivityForResult(intent, 0); 
     } 
    } 

@TargetApi(23) 
public void checkCameraPermission(){ 
    if(Build.VERSION.SDK_INT < Build.VERSION_CODES.M){ 
     return; 
    } 
    if (this.checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { 
     requestPermissions(new String[] {Manifest.permission.CAMERA}, REQUEST_CODE_CAMERA); 
    } 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] 
     grantResults) { 
    switch (requestCode) { 
     case REQUEST_CODE_CAMERA: 
      if(grantResults[0] == PackageManager.PERMISSION_GRANTED){ 
       Toast.makeText(this, "Thanks for your permission", LENGTH_SHORT).show(); 
      } else { 
       Toast.makeText(this, "We need your permission to open camera", 
         LENGTH_SHORT).show(); 
      } 
     default: 
      super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
      break; 
    } 
} 
+0

'checkCameraPermission()'に加えて、場所を次の方法上記

public void openScanBarCodeAcitvity() { Intent intent = new Intent(getActivity(), ScanBarcodeActvity.class); startActivityForResult(intent, 0); } 

コールを次でそれを行うことができます。あなたはそこで何をしていますか?私たちは見ることができません。 – greenapps

+0

'checkCameraPermission()'メソッドにコードの下にインテントを入れました。 –

+0

このコードは、すでに許可を得ている場合にのみ呼び出されます。あなたはあなたがまだ許可を得ていないという提案です。 – greenapps

答えて

1

あなたの活動にonRequestPermissionsResult methodmを許可要求結果をチェックして、ユーザーが許可を与えた場合、私はあなたがScanBarcodeActvityを開きたいと仮定しています

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    if (requestCode == REQUEST_CODE_CAMERA && 
      grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

     //permisssion was granted 
    } else { 

     //permisssion was not granted 
    } 
} 
+0

答えとしてのコメントの投稿。ここでも見ることができます。 – greenapps

1

活動を開くことができます。

あなたは道にscanZxing()メソッド

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] 
     grantResults) { 
    switch (requestCode) { 
     case REQUEST_CODE_CAMERA: 
      if(grantResults[0] == PackageManager.PERMISSION_GRANTED){ 
       Toast.makeText(this, "Thanks for your permission", LENGTH_SHORT).show(); 
       //permission granted, open activity 
       openScanBarCodeAcitvity(); 
      } else { 
       Toast.makeText(this, "We need your permission to open camera", 
         LENGTH_SHORT).show(); 
      } 
     default: 
      super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
      break; 
    } 
} 
+0

答えとしてのコメントの投稿。あなたはここでそれを見ることができます。 – greenapps

関連する問題