2017-02-12 94 views
1

家伙,我已经从棒糖去牛轧糖,我试图让我的相机拍摄一张照片在我的应用程序Android的牛轧糖权限

我理解你现在必须授予在运行时的权限,并曾尝试以下

static final Integer CAMERA = 0x5; 

public void onCreate(Bundle savedInstanceState) { 
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

     askForPermission(Manifest.permission.CAMERA,CAMERA); 
} 

private void askForPermission(String permission, Integer requestCode) { 

    Toast.makeText(this, permission, Toast.LENGTH_SHORT).show(); 
    if (ContextCompat.checkSelfPermission(newstart.this, permission) != PackageManager.PERMISSION_GRANTED) { 

     // Should we show an explanation? 
     if (ActivityCompat.shouldShowRequestPermissionRationale(newstart.this, permission)) { 

      //This is called if user has denied the permission before 
      //In this case I am just asking the permission again 
      ActivityCompat.requestPermissions(newstart.this, new String[]{permission}, requestCode); 

     } else { 

      ActivityCompat.requestPermissions(newstart.this, new String[]{permission}, requestCode); 
     } 
    } else { 
     Toast.makeText(this, "" + permission + " is already granted.", Toast.LENGTH_SHORT).show(); 
    } 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 

    if(ActivityCompat.checkSelfPermission(this, permissions[0]) == PackageManager.PERMISSION_GRANTED){ 
     Toast.makeText(this, "Permission check", Toast.LENGTH_SHORT).show(); 
     switch (requestCode) { 
      //Location 
      case 1: 

       break; 

      //Write external Storage 
      case 3: 
       break; 
      //Read External Storage 
      case 4: 
       Intent imageIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
       startActivityForResult(imageIntent, 11); 
       break; 
      //Camera 
      case 5: 
       Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
       if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
        startActivityForResult(takePictureIntent, 12); 
       } 
       break; 

     } 

     Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show(); 
    }else{ 
     Toast.makeText(this, "Permission denied", Toast.LENGTH_SHORT).show(); 
    } 
} 

这是我在启动程序的第一个活动,不管是什么我尝试它使敬酒拒绝的权限,不会让我授予权限

如果我尝试只拍一张照片崩溃的应用程序,所以我知道我需要授予你许可SE相机

任何想法,我要去哪里错了

任何帮助表示赞赏

马克

回答

0

文件://不允许了。 您应该通过content:// scheme来发送URI,而不是Content Provider的URI方案。 From Developer Guide

你也可以改变从24到23的目标SDK会解决它。(不推荐)

+0

感谢您的帮助 – user3422687

相关问题