-1

私はアクセス権をユーザーに許可することができます。私はユーザーの連絡先にアクセスしたいので、2つのオプションの許可と拒否の例とソースコードのプロンプトを表示します。Android Marshmallow権限ですか?

答えて

0

この

private void PerrmissionWork() { 

    List<String> permissionsNeeded = new ArrayList<String>(); 

    final List<String> permissionsList = new ArrayList<String>(); 
    if (!addPermission(permissionsList, 
      Manifest.permission.ACCESS_FINE_LOCATION)) 
     permissionsNeeded.add("GPS"); 
    if (!addPermission(permissionsList, 
      Manifest.permission.ACCESS_COARSE_LOCATION)) 
     permissionsNeeded.add("GPS COARSE"); 


    if (permissionsList.size() > 0) { 
     if (permissionsNeeded.size() > 0) { 
      // Need Rationale 
      String message = "You need to grant access to " 
        + permissionsNeeded.get(0); 
      for (int i = 1; i < permissionsNeeded.size(); i++) 
       message = message + ", " + permissionsNeeded.get(i); 
      showMessageOKCancel(message, 
        new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, 
           int which) { 
          requestPermissions(permissionsList 
            .toArray(new String[permissionsList 
              .size()]), 
            REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS); 
         } 
        }); 
      return; 
     } 
     requestPermissions(
       permissionsList.toArray(new String[permissionsList.size()]), 
       REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS); 
     return; 
    } 
    splashMainWork(); 
} 

// mapWork(); 

private boolean addPermission(List<String> permissionsList, 
     String permission) { 
    if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) { 
     permissionsList.add(permission); 
     // Check for Rationale Option 
     if (!shouldShowRequestPermissionRationale(permission)) 
      return false; 
    } 
    return true; 
} 

private void showMessageOKCancel(String message, 
     android.content.DialogInterface.OnClickListener onClickListener) { 
    new AlertDialog.Builder(context).setMessage(message) 
      .setPositiveButton("OK", onClickListener).setCancelable(false) 
      .setNegativeButton("Cancel", null).create().show(); 

} 

@Override 
public void onRequestPermissionsResult(int requestCode, 
     String[] permissions, int[] grantResults) { 
    switch (requestCode) { 
    case REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS: { 
     Map<String, Integer> perms = new HashMap<String, Integer>(); 
     // Initial 
     perms.put(Manifest.permission.ACCESS_FINE_LOCATION, 
       PackageManager.PERMISSION_GRANTED); 
     perms.put(Manifest.permission.ACCESS_COARSE_LOCATION, 
       PackageManager.PERMISSION_GRANTED); 

     // Fill with results 
     for (int i = 0; i < permissions.length; i++) 
      perms.put(permissions[i], grantResults[i]); 
     // Check for ACCESS_FINE_LOCATION 
     if (perms.get(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED 
       && perms.get(Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED 
       ) { 
      // All Permissions Granted 
      splashMainWork(); 
     } else { 
      // Permission Denied 
      Toast.makeText(context, "Some Permission is Denied", 
        Toast.LENGTH_SHORT).show(); 
     } 
    } 
     break; 
    default: 
     super.onRequestPermissionsResult(requestCode, permissions, 
       grantResults); 
    } 
} 

のように行い、このように作成する上で、このメソッドを呼び出します。..

if (Build.VERSION.SDK_INT >= 23) { 
     PerrmissionWork(); 
    } else { 
     splashMainWork(); 
    } 

を私はスプラッシュ作業方法で位置を取得し、あなたが接触permisssionを使用することができる場所の許可を使用していますし、スプラッシュ作業の代わりにあなたの連絡先コードを行う..とデモの多くも利用可能な彼らはあなたに良い説明を与えることができるGoogleを試してください..また、非常に良い説明が開発者も座っている。
here .. Try this blog very helpful

+1

回答ありがとうございます! –

+0

@NightFury ..私の喜び.. – Ancee

0

は、権限を要求に関する公式ドキュメントのhttps://developer.android.com/training/permissions/requesting.htmlをチェックしてください。このドキュメントを使用したサンプルクラスは次のとおりです。

public class PermissionCheck { 


    private void requestIfNeeded() { 
     // Here, thisActivity is the current activity 
     if (ContextCompat.checkSelfPermission(thisActivity, 
         Manifest.permission.READ_CONTACTS) 
       != PackageManager.PERMISSION_GRANTED) { 

      // Should we show an explanation? 
      if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity, 
        Manifest.permission.READ_CONTACTS)) { 

       // Show an expanation to the user *asynchronously* -- don't block 
       // this thread waiting for the user's response! After the user 
       // sees the explanation, try again to request the permission. 

      } else { 

       // No explanation needed, we can request the permission. 

       ActivityCompat.requestPermissions(thisActivity, 
         new String[]{Manifest.permission.READ_CONTACTS}, 
         MY_PERMISSIONS_REQUEST_READ_CONTACTS); 

       // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an 
       // app-defined int constant. The callback method gets the 
       // result of the request. 
      } 
     } 
    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, 
      String permissions[], int[] grantResults) { 
     switch (requestCode) { 
      case MY_PERMISSIONS_REQUEST_READ_CONTACTS: { 
       // If request is cancelled, the result arrays are empty. 
       if (grantResults.length > 0 
        && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

        // permission was granted, yay! Do the 
        // contacts-related task you need to do. 
        handleSuccessfulPermissionsRequest(); 

       } else { 

        // permission denied, boo! Disable the 
        // functionality that depends on this permission. 
        handlePermissionDenied(); 
       } 
       return; 
      } 

      // other 'case' lines to check for other 
      // permissions this app might request 
     } 
    } 

    private void handleSuccessfulPermissionsRequest() { 
      Toast.makeText(this, "Request Successful!",Toast.LENGTH_SHORT).show(); 
    } 

    private void handlePermissionDenied() { 
     Toast.makeText(this, "Request Denied!",Toast.LENGTH_SHORT).show(); 
    } 

} 
関連する問題