2017-02-12 18 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(); 
    } 
} 

Это первая активность в моем приложении при запуске и независимо от того, что я стараюсь это не держит тосты разрешения запрещена и не позволит мне предоставить разрешения

Если я пытаюсь просто сделать снимок это происходит сбой приложения так Я знаю, что мне нужно предоставить разрешение на се камера

Любые идеи, где я буду неправильно

Любая помощь оценили

Марк

ответ

0

файл: // не допускается больше. Вы должны отправить URI через контент: // вместо схемы, которая является схемой URI для поставщика контента. From Developer Guide

вы также можете изменить целевой SDK от 24 до 23 лет он будет это исправить. (Не рекомендуется)

+0

спасибо за вашу помощь – user3422687