package com.wuxiaolong.androidsamples.runtimepermission;
import android.Manifest;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import com.wuxiaolong.androidsamples.BaseActivity;
import com.wuxiaolong.androidsamples.R;
import com.wuxiaolong.androidutils.library.LogUtil;
import java.util.List;
import pub.devrel.easypermissions.AfterPermissionGranted;
import pub.devrel.easypermissions.AppSettingsDialog;
import pub.devrel.easypermissions.EasyPermissions;
import static android.Manifest.permission.ACCESS_FINE_LOCATION;
import static android.Manifest.permission.BODY_SENSORS;
import static android.Manifest.permission.CAMERA;
import static android.Manifest.permission.READ_CALENDAR;
import static android.Manifest.permission.READ_CONTACTS;
import static android.Manifest.permission.READ_EXTERNAL_STORAGE;
import static android.Manifest.permission.READ_PHONE_STATE;
import static android.Manifest.permission.RECORD_AUDIO;
import static android.Manifest.permission.SEND_SMS;
/**
* Created by WuXiaolong
* 微信公众号:吴小龙同学
* 个人博客:http://wuxiaolong.me/
*/
public class RuntimePermissionActivity extends BaseActivity implements OnPermissionCallbackListener, EasyPermissions.PermissionCallbacks {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_runtime_permission);
}
public void onPermission(View v) {
switch (v.getId()) {
case R.id.calendar:
//日历
requestRuntimePermission(READ_CALENDAR, this);
break;
case R.id.camera:
//照相机
requestRuntimePermission(CAMERA, this);
break;
case R.id.contacts:
//通讯录
requestRuntimePermission(READ_CONTACTS, this);
break;
case R.id.location:
//定位
requestRuntimePermission(ACCESS_FINE_LOCATION, this);
break;
case R.id.microPhone:
//录音
requestRuntimePermission(RECORD_AUDIO, this);
break;
case R.id.readPhone:
//读取手机状态
requestRuntimePermission(READ_PHONE_STATE, this);
break;
case R.id.sensors:
//传感器
requestRuntimePermission(BODY_SENSORS, this);
break;
case R.id.sms:
//短信
requestRuntimePermission(SEND_SMS, this);
break;
case R.id.storage:
//文件管理
requestRuntimePermission(READ_EXTERNAL_STORAGE, this);
break;
case R.id.contactsLocation:
requestContactsLocation();
break;
case R.id.easyPermissions:
methodRequiresTwoPermission();
break;
}
}
@Override
public void onGranted() {
Log.i("wxl", "授权请求通过");
}
@Override
public void onDenied() {
Log.i("wxl", "授权请求拒绝");
}
@AfterPermissionGranted(1010)
private void methodRequiresTwoPermission() {
String[] perms = {Manifest.permission.CAMERA, SEND_SMS};
if (EasyPermissions.hasPermissions(this, perms)) {
// Already have permission, do the thing
// ...
LogUtil.d("Already have permission, do the thing");
} else {
// Do not have permissions, request them now
LogUtil.d("Do not have permissions, request them now");
EasyPermissions.requestPermissions(this, "camera_and_send_sms", 1010, perms);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
// Forward results to EasyPermissions
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
}
@Override
public void onPermissionsGranted(int requestCode, List<String> list) {
// Some permissions have been granted
// ...
LogUtil.d("Some permissions have been granted=" + requestCode);
}
@Override
public void onPermissionsDenied(int requestCode, List<String> list) {
// Some permissions have been denied
// ...
LogUtil.d("Some permissions have been denied=" + requestCode);
if (EasyPermissions.somePermissionPermanentlyDenied(this, list)) {
new AppSettingsDialog.Builder(this).build().show();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == AppSettingsDialog.DEFAULT_SETTINGS_REQ_CODE) {
// Do something after user returned from app settings screen, like showing a Toast.
Toast.makeText(this, "returned_from_app_settings_to_activity", Toast.LENGTH_SHORT)
.show();
}
}
}