這篇文章將為大家詳細講解有關怎么在Android中手動檢查并申請權限,文章內(nèi)容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
Android權限一般是在AndroidManifest.xml中聲明,在安裝或首次使用的時候系統(tǒng)會自動提示用戶是否提供權限
Android官方文檔:
Then, when the application is installed on the device, the installer determines whether or not to grant the requested permission by checking the authorities that signed the application's certificates and, in some cases, asking the user. If the permission is granted, the application is able to use the protected features. If not, its attempts to access those features will simply fail without any notification to the user.
但有時候因為手機設備等原因,并沒有在一開始就彈出提示框讓用戶確認是否提供權限,對于有些權限,不確認的話就不提供權限,因此,有些功能就無法實現(xiàn)。
這時候需要我們手動檢查是否已經(jīng)擁有權限,沒有的話就調(diào)用代碼提示用戶提供權限。
如何手動檢查并申請權限
如:在寫入之前檢查是否有WRITE_EXTERNAL_STORAGE權限,沒有則申請權限
代碼:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { //申請WRITE_EXTERNAL_STORAGE權限 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, WRITE_EXTERNAL_STORAGE_REQUEST_CODE); }
請求權限后,系統(tǒng)會彈出請求權限的Dialog,允許即可
用戶選擇允許或拒絕后,會回調(diào)onRequestPermissionsResult方法, 該方法類似于onActivityResult
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); doNext(requestCode,grantResults); }
PS:
在Android6.0,有些權限只需要在AndroidManifest.xml文件中聲明即可,但有些除了聲明以外,還需要在運行時判斷,即用戶確認,需要確認的權限如下:
身體傳感器 日歷 攝像頭 通訊錄 地理位置 麥克風 電話 短信 存儲空間
Android6.0系統(tǒng)默認為targetSdkVersion小于23的應用默認授予了所申請的所有權限,
所以如果你以前的APP設置的targetSdkVersion低于23,在運行時也不會崩潰,
但這也只是一個臨時的救急策略,用戶還是可以在設置中取消授予的權限。
以下權限只需要在AndroidManifest.xml中聲明即可使用:
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS android.permission.ACCESS_NETWORK_STATE android.permission.ACCESS_NOTIFICATION_POLICY android.permission.ACCESS_WIFI_STATE android.permission.ACCESS_WIMAX_STATE android.permission.BLUETOOTH android.permission.BLUETOOTH_ADMIN android.permission.BROADCAST_STICKY android.permission.CHANGE_NETWORK_STATE android.permission.CHANGE_WIFI_MULTICAST_STATE android.permission.CHANGE_WIFI_STATE android.permission.CHANGE_WIMAX_STATE android.permission.DISABLE_KEYGUARD android.permission.EXPAND_STATUS_BAR android.permission.FLASHLIGHT android.permission.GET_ACCOUNTS android.permission.GET_PACKAGE_SIZE android.permission.INTERNET android.permission.KILL_BACKGROUND_PROCESSES android.permission.MODIFY_AUDIO_SETTINGS android.permission.NFC android.permission.READ_SYNC_SETTINGS android.permission.READ_SYNC_STATS android.permission.RECEIVE_BOOT_COMPLETED android.permission.REORDER_TASKS android.permission.REQUEST_INSTALL_PACKAGES android.permission.SET_TIME_ZONE android.permission.SET_WALLPAPER android.permission.SET_WALLPAPER_HINTS android.permission.SUBSCRIBED_FEEDS_READ android.permission.TRANSMIT_IR android.permission.USE_FINGERPRINT android.permission.VIBRATE android.permission.WAKE_LOCK android.permission.WRITE_SYNC_SETTINGS com.android.alarm.permission.SET_ALARM com.android.launcher.permission.INSTALL_SHORTCUT com.android.launcher.permission.UNINSTALL_SHORTCUTAndroid是什么
Android是一種基于Linux內(nèi)核的自由及開放源代碼的操作系統(tǒng),主要使用于移動設備,如智能手機和平板電腦,由美國Google公司和開放手機聯(lián)盟領導及開發(fā)。
關于怎么在Android中手動檢查并申請權限就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
當前標題:怎么在Android中手動檢查并申請權限-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://www.2m8n56k.cn/article14/cepcge.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站排名、關鍵詞優(yōu)化、網(wǎng)站制作、服務器托管、電子商務
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容