2016-05-20 6 views
1

может ли кто-нибудь знать, как добавить поддержку зефира в существующее приложение, которое приложение является премаршмарным приложением? как проверить разрешение во время выполнения или как написать код для проверки разрешения во время выполнения. и где этот код написан в приложении?Как добавить поддержку зефира к существующему предварительному применению Marshmallow

+0

Кто downvoted, пожалуйста, потрудились комментарий! – TechSpellBound

ответ

0

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

public class AppPermission { 

    public static boolean isMarshmallowPlusDevice() { 
     return Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1; 
    } 

    @TargetApi(Build.VERSION_CODES.M) 
    public static boolean isPermissionRequestRequired(Activity activity, @NonNull String[] permissions, int requestCode) { 
     if (isMarshmallowPlusDevice() && permissions.length > 0) { 
      List<String> newPermissionList = new ArrayList<>(); 
      for (String permission : permissions) { 
       if (PackageManager.PERMISSION_GRANTED != activity.checkSelfPermission(permission)) { 
        newPermissionList.add(permission); 
       } 
      } 
      if (newPermissionList.size() > 0) { 
       activity.requestPermissions(newPermissionList.toArray(new String[newPermissionList.size()]), requestCode); 
       return true; 
      } 
     } 
     return false; 
    } 
} 

А затем поставить этот код, где требуется разрешение от USER-

if (!AppPermission.isPermissionRequestRequired(MyActivity.this, new String[]{"android.permission.GET_ACCOUNTS"}, 
     REQUEST_APP_PERMISSION)) { 
    // Your code if permission available 
} 

После это, в вашем Fragment или Activity введите этот код -

@Override 
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    switch (requestCode) { 
     case REQUEST_APP_PERMISSION: 
      for (int i = 0; i < permissions.length; i++) { 
       String permission = permissions[i]; 
       int grantResult = grantResults[i]; 
       switch (permission) { 
        case "android.permission.GET_ACCOUNTS": 
         if (PackageManager.PERMISSION_GRANTED == grantResult) { 
          // Your code 
         } 
         break; 
       } 
      } 
      break; 
    } 
} 

Вышеупомянутый код предназначен для разрешения запроса на GET_ACCOUNTS, вы можете изменить его на все, что требуется.

0

Вы можете обратиться к официальной документации для Marshmellow:

https://developer.android.com/training/permissions/requesting.html

В соответствии с этой документацией, предоставление разрешения, когда используется функция введена в Android 6.0 (Зефир), поэтому я боюсь, что его не представляется возможным в предыдущие версии.

Однако, если пользователь использует телефон CyanogenMod или MIUI, есть приложения, которые обертывают модель разрешения акций Android-приложений и делают возможными динамические разрешения.

0
First check if the device is Android 6.0 by using below code 

here is the example of read contacts 

if(Build.VERSION.SDK_INT>Build.VERSION_CODES.LOLLIPOP_MR1){ 

// here check wheather runtime permission is granted or not 
if (ContextCompat.checkSelfPermission(thisActivity, 
       Manifest.permission.READ_CONTACTS) 
     != PackageManager.PERMISSION_GRANTED) { 
// ask for permission 
ActivityCompat.requestPermissions(thisActivity, 
       new String[]{Manifest.permission.READ_CONTACTS}, 
       MY_PERMISSIONS_REQUEST_READ_CONTACTS); 
} 
else 
return; 
} 
Don't forget to define permission in manifest fileYou can check permission in Home Screen please follow the link below 

https://developer.android.com/training/permissions/requesting.html 

https://www.captechconsulting.com/blogs/runtime-permissions-best-practices-and-how-to-gracefully-handle-permission-removal

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