Run-time permissions
- Use Contextcompat.checkselfpermission (mainactivity.this,manifest.permission.call_phone)! = packagemanager.permission_granted//determine if there is permission
- Activitycompat.requestpermissions (Mainactivity.this,
New string[] {manifest.permission.call_phone},1);//no permission to apply
- Onrequestpermissionresult ()//Any result will be callback to this function, so rewrite this function
Makecallbutton.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 ();
}
});
private void Call ()
{
try{
Intent Intent = new Intent (intent.action_call);
Intent.setdata (Uri.parse ("tel:10086"));
StartActivity (Intent);
}
catch (SecurityException e)
{
E.printstacktrace ();
}
}
@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode){ case 1: if(grantResults.length >0 && grantResults[0]== PackageManager.PERMISSION_GRANTED) call(); else Toast.makeText(MainActivity.this,"you denied the permission",Toast.LENGTH_LONG).show(); break; default:}}
}
Find contact name and phone
ListView Contactsview = (ListView) Findviewbyid (R.id.listview);
adapter = new Arrayadapter
private void Readcontanct ()
{
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 number =cursor.getcolumnname (cursor.getcolumnindex
(ContactsContract.CommonDataKinds.Phone.NUMBER));
Contactslist.add (number);
Adapter.notifydatasetchanged ();
}
}
catch (Exception e)
{
E.printstacktrace ();
}
finally {
if (cursor!=null)
Cursor.close ();
}
}
Android Studio Learning (vi) content provider