一、说在前面
今天打算先放下在权限前面弹框,先学会如何动态的申请权限。
二、大体思路
有之前小账本的经验,今天先写一个申请权限的例子,再写的过程当中寻找灵感。
三、代码
public class MainActivity extends Activity implements OnClickListener
{
private Button but_old = null;
private Button but_func = null;
private ImageView iv_show = null;
private Button button;
ArrayAdapter<String> adapter;
List<String> contactList = new ArrayList<>();
private ListView ListView_ReadContact;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(R.layout.picture_tuise);
but_func = (Button) findViewById(R.id.btn_one);
but_old = (Button) findViewById(R.id.btn_two);
iv_show = (ImageView) findViewById(R.id.imgShow);
// but_func.setOnClickListener(this);
// but_old.setOnClickListener(this);
setContentView(R.layout.permission);
button = (Button) findViewById(R.id.Button);
ListView_ReadContact = (ListView) findViewById(R.id.ListView_ReadContact);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, contactList);
ListView_ReadContact.setAdapter(adapter);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE)!=
// PackageManager.PERMISSION_GRANTED){
// ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.CALL_PHONE
// },1);
// }else {
// call();
// }
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.READ_CONTACTS}, 1);
} else {
readContact();
}
}
});
}
public void readContact() {
Cursor cursor = null;
try {
cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
if (cursor != null) {
while (cursor.moveToNext()) {
//获取联系人姓名
String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String Num=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
contactList.add(displayName+"\n"+Num);
}
adapter.notifyDataSetChanged();
}
} catch (Exception e) {
e.printStackTrace();
}finally {
if (cursor!=null){
cursor.close();
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode){
case 1:
if (grantResults.length>0&&grantResults[0]== PackageManager.PERMISSION_GRANTED){
readContact();
}else {
Toast.makeText(this,"未获取权限",Toast.LENGTH_SHORT).show();
}
break;
default:
break;
}
}
四、效果
