android权限请求
来源:互联网 发布:罗伯托.贝尼尼 知乎 编辑:程序博客网 时间:2024/04/29 02:03
import android.Manifest;import android.content.DialogInterface;import android.content.Intent;import android.content.pm.PackageManager;import android.net.Uri;import android.os.Build;import android.os.Bundle;import android.provider.Settings;import android.support.annotation.NonNull;import android.support.v4.app.ActivityCompat;import android.support.v4.content.ContextCompat;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.util.Log;import java.util.ArrayList;import java.util.List;/** * Created by ws on 2016-11-26. */public class BaseActivity extends AppCompatActivity { private final String TAG = "BaseActivity"; private int REQUEST_CODE_PERMISSION = 0x00099; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_base); } /** * 请求权限 * * @param permissions 请求的权限 * @param requestCode 请求权限的请求码 */ public void requestPermission(String[] permissions, int requestCode) { this.REQUEST_CODE_PERMISSION = requestCode; if (checkPermissions(permissions)) { permissionSuccess(REQUEST_CODE_PERMISSION); } else { List<String> needPermissions = getDeniedPermissions(permissions); ActivityCompat.requestPermissions(this, needPermissions.toArray(new String[needPermissions.size()]), REQUEST_CODE_PERMISSION); } } /** * 检测所有的权限是否都已授权 * * @param permissions * @return */ public boolean checkPermissions(String[] permissions) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { return true; } for (String permission : permissions) { if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) { return false; } } return true; } /** * 获取权限集中需要申请权限的列表 * * @param permissions * @return */ private List<String> getDeniedPermissions(String[] permissions) { List<String> needRequestPermissionList = new ArrayList<>(); for (String permission : permissions) { if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED || ActivityCompat.shouldShowRequestPermissionRationale(this, permission)) { needRequestPermissionList.add(permission); } } return needRequestPermissionList; } /** * 系统请求权限回调 * * @param requestCode * @param permissions * @param grantResults */ @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == REQUEST_CODE_PERMISSION) { if (verifyPermissions(grantResults)) { permissionSuccess(REQUEST_CODE_PERMISSION); } else { permissionFail(REQUEST_CODE_PERMISSION); //showTipsDialog(); } } } /** * 确认所有的权限是否都已授权 * * @param grantResults * @return */ private boolean verifyPermissions(int[] grantResults) { for (int grantResult : grantResults) { if (grantResult != PackageManager.PERMISSION_GRANTED) { return false; } } return true; } /** * 显示提示对话框 */ public void showTipsDialog() { new AlertDialog.Builder(this) .setCancelable(false) .setTitle("提示信息") .setMessage("当前应用缺少必要权限,该功能暂时无法使用。如若需要,请单击【确定】按钮前往设置中心进行权限授权。") .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } }) .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { startAppSettings(); finish(); } }).show(); } /** * 启动当前应用设置页面 */ private void startAppSettings() { Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); intent.setData(Uri.parse("package:" + getPackageName())); startActivity(intent); } /** * 获取权限成功 * * @param requestCode */ public void permissionSuccess(int requestCode) { Log.d(TAG, "获取权限成功=" + requestCode); } /** * 权限获取失败 * @param requestCode */ public void permissionFail(int requestCode) { Log.d(TAG, "获取权限失败=" + requestCode); }}
import android.content.Intent;import android.os.Bundle;import android.text.TextUtils;import com.lava.weather.util.SPUtils;/** * Created by ws on 2016/12/14. */public class SplashActivity extends BaseActivity { public String[] sRequiredPermissions = new String[] { android.Manifest.permission.RECORD_AUDIO, android.Manifest.permission.WRITE_EXTERNAL_STORAGE }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash); if(!checkPermissions(sRequiredPermissions)){ requestPermission(sRequiredPermissions,0x001); return; }else{ startActivity(); } } @Override public void permissionSuccess(int requestCode) { super.permissionSuccess(requestCode); switch (requestCode){ case 0x001: startActivity(); break; } } @Override public void permissionFail(int requestCode) { super.permissionFail(requestCode); showTipsDialog(); } private void startActivity() { String weather= (String) SPUtils.get(SplashActivity.this,"location",null); if (TextUtils.isEmpty(weather)) { // Intent intent = new Intent(this, ChooseAreaActivity.class); Intent intent = new Intent(this, LavaWeatherActivity.class); startActivity(intent); finish(); }else{ Intent intent = new Intent(this, LavaWeatherActivity.class); startActivity(intent); finish(); } }}
0 0
- Android请求root权限
- Android M权限请求
- android 6.0权限请求
- Android多权限请求
- android权限请求
- android多权限请求
- Xamarin Android权限请求
- Android权限请求
- Android多权限请求
- Android权限学习之请求权限实例
- android 应用请求root权限
- android.permission权限请求汇总
- Android (6.0) M 请求权限
- Android M之权限请求
- Android 运行时请求权限
- Android 6.0应用权限请求
- Android 6.0 权限请求问题
- Android 6.0 动态请求权限
- nginx和tomcat的区别
- 卡片界面增加行选择事件
- CSS3扁平化博客网页布局
- 利用JavaFx开发RIA桌面应用-Windows任务栏图标闪烁效果
- 使用GSON和泛型解析约定格式的JSON串
- android权限请求
- phpstorm+xampp 遇到 502 bad geteway
- 图像和轮廓匹配(hu矩)
- 手机移动端WEB资源整合
- wex5 教程 之 图文讲解 可观察对象的集群应用与绑定技术
- Epic Games Launcher启动器添加识别本地UE4引擎
- Android Studio使用
- location.href,location.replace(),location.reload()用法和区别
- 创建后台服务