2017-10-18 43 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

相关问题