Android内容提供器——运行权限
生活随笔
收集整理的這篇文章主要介紹了
Android内容提供器——运行权限
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
程序運行是的權限分為兩種,一種是普通權限,一種是危險權限。普通權限的話可以直接使用,只有危險權限需要詢問用戶的同意。
危險權限分組以及組內權限如下:
注:危險權限同一組內有一項權限被授權,則一組權限都被授權。
1 group:android.permission-group.CONTACTS 2 permission:android.permission.WRITE_CONTACTS 3 permission:android.permission.GET_ACCOUNTS 4 permission:android.permission.READ_CONTACTS 5 6 group:android.permission-group.PHONE 7 permission:android.permission.READ_CALL_LOG 8 permission:android.permission.READ_PHONE_STATE 9 permission:android.permission.CALL_PHONE 10 permission:android.permission.WRITE_CALL_LOG 11 permission:android.permission.USE_SIP 12 permission:android.permission.PROCESS_OUTGOING_CALLS 13 permission:com.android.voicemail.permission.ADD_VOICEMAIL 14 15 group:android.permission-group.CALENDAR 16 permission:android.permission.READ_CALENDAR 17 permission:android.permission.WRITE_CALENDAR 18 19 group:android.permission-group.CAMERA 20 permission:android.permission.CAMERA 21 22 group:android.permission-group.SENSORS 23 permission:android.permission.BODY_SENSORS 24 25 group:android.permission-group.LOCATION 26 permission:android.permission.ACCESS_FINE_LOCATION 27 permission:android.permission.ACCESS_COARSE_LOCATION 28 29 group:android.permission-group.STORAGE 30 permission:android.permission.READ_EXTERNAL_STORAGE 31 permission:android.permission.WRITE_EXTERNAL_STORAGE 32 33 group:android.permission-group.MICROPHONE 34 permission:android.permission.RECORD_AUDIO 35 36 group:android.permission-group.SMS 37 permission:android.permission.READ_SMS 38 permission:android.permission.RECEIVE_WAP_PUSH 39 permission:android.permission.RECEIVE_MMS 40 permission:android.permission.RECEIVE_SMS 41 permission:android.permission.SEND_SMS 42 permission:android.permission.READ_CELL_BROADCASTS申請權限:
以獲取撥打電話call權限為例。
首先在 AndroidManifest.xml 文件中聲明所需的權限:
<uses-permission android:name="android.permission.CALL_PHONE"/>在布局文件中設置一個按鈕,然后在MainActivity中編寫相關申請權限的邏輯。
申請主要分三個部分:
1.設置按鈕點擊事件,通過checkSelfPermission方法來判斷是否有相關權限,如果沒有權限,則調用requestPermissions方法來詢問用戶是否授權,如果有權限,則直接調用call()來進行執行。
2.在第一步調用完requestPermissions方法后,無論用戶選擇授權與否,都會回調到onRequestPermissionsResult()方法中,授權結果封裝在grantResults參數中,所以判斷授權結果,如果授權同意,則調用call方法,不同意則提示未獲得授權。
3.call方法具體,使用隱身intent方法,動作為撥打電話,并設置相應電話號碼,執行intent動作。為了防止程序奔潰,這些放在try方法里執行。
代碼如下:
1 public class MainActivity extends AppCompatActivity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_main); 7 8 /*設置按鈕點擊事件,通過checkSelfPermission方法來判斷是否有相關權限 9 * 如果沒有權限,則調用requestPermissions方法來詢問用戶是否授權 10 * 如果有權限,則直接調用call()來進行執行*/ 11 Button makeCall = (Button) findViewById(R.id.make_call); 12 makeCall.setOnClickListener(new View.OnClickListener() { 13 @Override 14 public void onClick(View view) { 15 /*該方法傳入兩個參數,第一個是context,第二個是要獲得的權限名。 16 將返回值與PackageManager.PERMISSION_GRANTED做比較*/ 17 if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) 18 != PackageManager.PERMISSION_GRANTED) { 19 /*為獲得授權,調用requestPermissions方法向用戶申請授權, 20 傳入三個參數:context,獲得的權限名字符串,以及請求碼,唯一值即可。*/ 21 ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CALL_PHONE}, 1); 22 } else { 23 call(); 24 } 25 } 26 }); 27 } 28 29 /*call方法具體,使用隱身intent方法,動作為撥打電話,并設置相應電話號碼,執行intent動作。 30 * 為了防止程序奔潰,這些放在try方法里執行。*/ 31 private void call() { 32 try { 33 Intent intent = new Intent(Intent.ACTION_CALL); 34 intent.setData(Uri.parse("tel:10086")); 35 startActivity(intent); 36 } catch (SecurityException e) { 37 e.printStackTrace(); 38 } 39 } 40 41 @Override 42 public void onRequestPermissionsResult(int requestCode, String[] permissions, 43 int[] grantResults) { 44 switch (requestCode) { 45 case 1: 46 if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 47 call(); 48 } else { 49 Toast.makeText(this, "you denied the permission", Toast.LENGTH_LONG).show(); 50 } 51 break; 52 default: 53 } 54 } 55 }?
轉載于:https://www.cnblogs.com/Mask-D/p/9520291.html
總結
以上是生活随笔為你收集整理的Android内容提供器——运行权限的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mac下安装brew下载非常慢解决方法
- 下一篇: android sina oauth2.