2015-11-13 2 views
-1

До сих пор я работал с более низкими версиями, поэтому я добавил разрешения в файл манифеста моего приложения. Но в marshmallow android 6.0 нам нужно использовать разрешения Runtime.Как использовать разрешение в android 6.0 marshmallow?

Может ли кто-нибудь объяснить мне, как использовать разрешение в 6.0 или предоставить какие-либо ссылки. Спасибо заранее.

код:

private static final int REQUEST_CAMERA = 0; 
private static final int REQUEST_CONTACTS = 1; 
private static final int REQUEST_LOCATION = 2; 
private static final int REQUEST_PHONE = 3; 
private static final int REQUEST_SMS = 4; 
private static final int REQUEST_STORAGE = 5; 

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

     switch(requestCode) { 
      case REQUEST_CAMERA: 
       if (canAccessCamera()) { 
        doCameraThing(); 
       } 
       else { 
        bzzzt(); 
       } 
       break; 

      case REQUEST_CONTACTS: 
       if (canAccessContacts()&&canAccessContacts1()) { 
        doContactsThing(); 
       } 
       else { 
        bzzzt(); 
       } 
       break; 

      case REQUEST_LOCATION: 
       if (canAccessLocation()&&canAccessLocation_1()) { 
        doLocationThing(); 
       } 
       else { 
        bzzzt(); 
       } 
       break; 
      case REQUEST_PHONE: 
       if (canAccessPhone()) { 
        dophoneThing(); 
       } 
       else { 
        bzzzt(); 
       } 
       break; 
      case REQUEST_SMS: 
       if (canAccessSms()&&canAccessSms1() && canAccessSms2()) { 
        doSmsThing(); 
       } 
       else { 
        bzzzt(); 
       } 
       break; 
      case REQUEST_STORAGE: 
       if (canAccessStorage()) { 
        dostorageThing(); 
       } 
       else { 
        bzzzt(); 
       } 
       break; 
     } 
    } 

//location 

    private boolean canAccessLocation() { 
     return(hasPermission(Manifest.permission.ACCESS_FINE_LOCATION)); 
    } 
    private boolean canAccessLocation_1() { 
     return(hasPermission(Manifest.permission.ACCESS_COARSE_LOCATION)); 
    } 



    //phone 
    private boolean canAccessPhone() { 
     return(hasPermission(Manifest.permission.READ_PHONE_STATE)); 
    } 
    private boolean canAccessStorage() { 
     return(hasPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)); 
    } 


    //sms 
    private boolean canAccessSms() { 
     return(hasPermission(Manifest.permission.READ_SMS)); 
    } 
    private boolean canAccessSms1() { 
     return(hasPermission(Manifest.permission.SEND_SMS)); 
    } 
    private boolean canAccessSms2() { 
     return(hasPermission(Manifest.permission.RECEIVE_SMS)); 
    } 


    //camera 
    private boolean canAccessCamera() { 
     return(hasPermission(Manifest.permission.CAMERA)); 
    } 

    //contact 

    private boolean canAccessContacts() { 
     return(hasPermission(Manifest.permission.READ_CONTACTS)); 
    } 
    private boolean canAccessContacts1() { 
     return(hasPermission(Manifest.permission.WRITE_CONTACTS)); 
    } 

    private boolean hasPermission(String perm) { 
     return(PackageManager.PERMISSION_GRANTED==checkSelfPermission(perm)); 
    } 

    private void bzzzt() { 
     Toast.makeText(this, R.string.toast_bzzzt, Toast.LENGTH_LONG).show(); 
    } 

    private void doCameraThing() { 
     Toast.makeText(this, R.string.toast_camera, Toast.LENGTH_SHORT).show(); 
    } 

    private void doContactsThing() { 
     Toast.makeText(this, R.string.toast_contacts, Toast.LENGTH_SHORT).show(); 
    } 

    private void doLocationThing() { 
     Toast.makeText(this, R.string.toast_location, Toast.LENGTH_SHORT).show(); 
    } 
    private void doSmsThing() { 
     Toast.makeText(this, R.string.toast_sms, Toast.LENGTH_SHORT).show(); 
    } 

    private void dostorageThing() { 
     Toast.makeText(this, R.string.toast_storage, Toast.LENGTH_SHORT).show(); 
    } 

    private void dophoneThing() { 
     Toast.makeText(this, R.string.toast_phone, Toast.LENGTH_SHORT).show(); 
    } 




    <string name="toast_camera">Camera Permissions have been granted!</string> 
    <string name="toast_contacts">Contacts Permissions have been granted</string> 
    <string name="toast_location">Location Permissions have been granted</string> 
    <string name="toast_phone">Phone Permissions have been granted!</string> 
    <string name="toast_storage">Storage Permissions have been granted</string> 
    <string name="toast_sms">Sms Permissions have been granted</string> 

я написал этот код. но я тестировал в android 6.0. он снова рушится. скажите, пожалуйста, что я сделал неправильно.

+0

http://developer.android.com/training/permissions/requesting.html – CommonsWare

+0

пожалуйста любой привести пример с несколькими разрешениями одновременно в onRequestPermissionsResult –

+0

https: // GitHub. com/commonsguy/cw-omnibus/tree/master/Permissions/tutorial/finish/RuntimePermTutorial – CommonsWare

ответ

1

Проверьте this блог. Это объясняет все, что связано с разрешения андроида M

Смежные вопросы