安卓6.0申請許可權 AndPermission
阿新 • • 發佈:2019-01-10
compile 'com.yanzhenjie.alertdialog:alertdialog:1.0.1'
implementation 'com.yanzhenjie:permission:2.0.0-rc3'
1,DefaultRationale
/* * Copyright © Yan Zhenjie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.vily.imagescandemo2; import android.content.Context; import android.content.DialogInterface; import android.text.TextUtils; import com.yanzhenjie.alertdialog.AlertDialog; import com.yanzhenjie.permission.Permission; import com.yanzhenjie.permission.Rationale; import com.yanzhenjie.permission.RequestExecutor; import java.util.List; /** * Created by YanZhenjie on 2018/1/1. */ public final class DefaultRationale implements Rationale { @Override public void showRationale(Context context, List<String> permissions, final RequestExecutor executor) { List<String> permissionNames = Permission.transformText(context, permissions); String message = context.getString(R.string.message_permission_rationale, TextUtils.join("\n", permissionNames)); AlertDialog.newBuilder(context) .setCancelable(false) .setTitle(R.string.title_dialog) .setMessage(message) .setPositiveButton(R.string.resume, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { executor.execute(); } }) .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { executor.cancel(); } }) .show(); } }
2,PermissionSetting
/* * Copyright © Yan Zhenjie * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.vily.imagescandemo2; import android.content.Context; import android.content.DialogInterface; import android.text.TextUtils; import com.yanzhenjie.alertdialog.AlertDialog; import com.yanzhenjie.permission.AndPermission; import com.yanzhenjie.permission.Permission; import com.yanzhenjie.permission.SettingService; import java.util.List; /** * Created by YanZhenjie on 2018/1/1. */ public final class PermissionSetting { private final Context mContext; public PermissionSetting(Context context) { this.mContext = context; } public void showSetting(final List<String> permissions) { List<String> permissionNames = Permission.transformText(mContext, permissions); String message = mContext.getString(R.string.message_permission_always_failed, TextUtils.join("\n", permissionNames)); final SettingService settingService = AndPermission.permissionSetting(mContext); AlertDialog.newBuilder(mContext) .setCancelable(false) .setTitle(R.string.title_dialog) .setMessage(message) .setPositiveButton(R.string.setting, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { settingService.execute(); } }) .setNegativeButton(R.string.no, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { settingService.cancel(); } }) .show(); } }
3,使用
// 6.0之上申請牌照和寫入儲存許可權 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { AndPermission.with(Select_or_Picture_Activity.this).permission(Manifest.permission.CAMERA,Manifest.permission.WRITE_EXTERNAL_STORAGE) .rationale(new DefaultRationale() ) .onGranted(new Action() { @Override public void onAction(List<String> permissions) { System.out.println("---------有許可權了"); Toast.makeText(Select_or_Picture_Activity.this,R.string.successfully,Toast.LENGTH_SHORT).show(); } }) .onDenied(new Action() { @Override public void onAction(List<String> permissions) { System.out.println("---------沒有許可權"); Toast.makeText(Select_or_Picture_Activity.this,R.string.failure,Toast.LENGTH_SHORT).show(); if (AndPermission.hasAlwaysDeniedPermission(Select_or_Picture_Activity.this, permissions)) { mSetting.showSetting(permissions); } } }).start(); }else { // new getPic().execute(); // 獲取圖片 }