需要動態(tài)申請的權(quán)限:

危險權(quán)限列表
需求:現(xiàn)在要調(diào)用照相機照照片做頭像-_-
以下代碼是根據(jù)鴻洋大神的Demo沾的, 做以后開發(fā)時忘了可以回頭看看
public class MainActivity extends AppCompatActivity {
private Button id_btn_callphone;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
id_btn_callphone = (Button) findViewById(R.id.id_btn_callphone);
id_btn_callphone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.CALL_PHONE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.CALL_PHONE},
1);
} else {
callPhone();
}
}
});
}
/**
* 打電話
*/
private void callPhone() {
Intent intent = new Intent(Intent.ACTION_CALL);
Uri data = Uri.parse("tel:" + "10086");
intent.setData(data);
startActivity(intent);
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)
{
if (requestCode == 1)
{
if (grantResults[0] == PackageManager.PERMISSION_GRANTED)
{
callPhone();
} else
{
// Permission Denied
Toast.makeText(MainActivity.this, "Permission Denied", Toast.LENGTH_SHORT).show();
}
return;
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
下面幾部記錄了我動態(tài)申請權(quán)限的步驟
1, 撥打電話時檢查權(quán)限
2, 有就撥打電話; 若是沒有的話就申請權(quán)限
3, 權(quán)限申請的回調(diào)在onRequestPermissionsResult 這個方法中執(zhí)行, 這時若是用戶同意, 那就有權(quán)限, 撥打電話, 用戶不同意, 只能彈toast提示沒權(quán)限撥打不了...
我拿oppoA57手機測試(6.0.1系統(tǒng)), 一切正常..