package com.youth.xf.ui.demo; import android.Manifest; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.provider.MediaStore; import android.provider.Settings; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; import com.youth.xf.BaseActivity; import com.youth.xf.R; import com.youth.xf.ui.MainActivity; import com.youth.xframe.utils.permission.XPermission; import java.util.Calendar; /** * 使用方法: 以拨打电话为例 1、首先AndroidManifest中配置必要的权限 <uses-permission android:name="android.permission.CALL_PHONE"/> 2、继承XActivity 3、调用工具类方法 XPermission.requestPermissions(Context context, int requestCode, String[] permissions, OnPermissionListener listener) 这里主要注意这个Context必需是一个Activity 如果在Activity中可以传this; 如果在Fragment中传getActivity(); 如果在View中传getContext(); */ public class XPermissionDemoActivity extends BaseActivity implements View.OnClickListener { private Button button1,button2,button3; @Override public int getLayoutId() { return R.layout.activity_xpermission_demo; } @Override public void initData(Bundle savedInstanceState) { } @Override public void initView() { button1 = (Button) findViewById(R.id.button1); button2 = (Button) findViewById(R.id.button2); button3 = (Button) findViewById(R.id.button3); button1.setOnClickListener(this); button2.setOnClickListener(this); button3.setOnClickListener(this); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.button1: doCallPhone(); break; case R.id.button2: doCamera(); break; case R.id.button3: sendPermission(); break; } } /** * 拨打电话 */ private void doCallPhone() { XPermission.requestPermissions(this, 100, new String[]{Manifest.permission .CALL_PHONE}, new XPermission.OnPermissionListener() { //权限申请成功时调用 @Override public void onPermissionGranted() { Intent intent = new Intent(); intent.setAction(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:18682555854")); startActivity(intent); } //权限被用户禁止时调用 @Override public void onPermissionDenied() { //给出友好提示,并且提示启动当前应用设置页面打开权限 XPermission.showTipsDialog(XPermissionDemoActivity.this); } }); } /** * 照相 */ private void doCamera() { XPermission.requestPermissions(this, 101, new String[]{Manifest.permission .CAMERA}, new XPermission.OnPermissionListener() { @Override public void onPermissionGranted() { Intent intent = new Intent(); intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE); startActivity(intent); } @Override public void onPermissionDenied() { XPermission.showTipsDialog(XPermissionDemoActivity.this); } }); } /** * 多个权限 */ private void sendPermission() { XPermission.requestPermissions(this, 102, new String[]{ Manifest.permission.READ_CONTACTS, Manifest.permission.RECEIVE_SMS, Manifest.permission.WRITE_CONTACTS }, new XPermission.OnPermissionListener() { @Override public void onPermissionGranted() { Toast.makeText(getApplication(),"申请成功!",Toast.LENGTH_SHORT).show(); } @Override public void onPermissionDenied() { XPermission.showTipsDialog(XPermissionDemoActivity.this); } }); } }