Android 動態申請許可權框架

2021-10-24 17:52:47 字數 2860 閱讀 4063

github 位址

1.1、配置 build.gradle

第三方包用到了lambda語法,需要新增以下**。

否則錯誤:invoke-customs are only supported starting with android o (--min-api 26)

compileoptions
1.2、檢查許可權

final rxpermissions rxpermissions =

newrxpermissions

(mainactivity.

this);

rxpermissions.

isgranted

(manifest.permission.access_fine_location)

rxpermissions.

isgranted

(manifest.permission.access_coarse_location)

1.3、例:申請位置許可權

1、androidmanifest

permission android:name=

"android.permission.access_fine_location"

/>

permission android:name=

"android.permission.access_coarse_location"

/>

2、**

final rxpermissions rxpermissions =

newrxpermissions

(mainactivity.

this);

rxpermissions.

requesteach

(manifest.permission.access_fine_location,

manifest.permission.access_coarse_location)

.subscribe

(new

consumer()

else

if(permission.shouldshowrequestpermissionrationale)

else}}

);

github 位址

同一組的任何乙個許可權被授權了,其他許可權也被自動授權。對於申請時彈出的提示框上的文字說明也是對整個許可權組的說明。

calendar(日曆)

camera(相機)

contacts(聯絡人)

location(位置)

microphone(麥克風)

phone(手機)

sensors(感測器)

sms(簡訊)

storage(儲存卡)

參考鏈結

使用 tools:node=「remove」 屬性,比如第三方sdk中有網路許可權,想要移除就可以這樣寫。

<

uses

-permission

android:name=

"android.permission.internet"

tools:node=

"remove"

/>

1、新建檔案的許可權

"android.permission.mount_unmount_filesystems"

/>

2、android 8.0 新建檔案許可權

在 res 目錄下新建 xml 資料夾,在其中新建 provider_paths.xml 檔案。

<

?xml version=

"1.0" encoding=

"utf-8"

?>

"">

name=

"external_files"

path=

"."/

>

<

/paths>

然後在 androidmanifest 中註冊 provider。

android:name=

"androidx.core.content.fileprovider"

android:authorities=

android:exported=

"false"

android:granturipermissions=

"true"

>

android:name=

"android.support.file_provider_paths"

android:resource=

"@xml/provider_paths"

/>

<

/provider>

3、android 10 新建檔案許可權

android:requestlegacyexternalstorage=

"true"

tools:targetapi=

"q"

Android 動態許可權申請

1.android6.0以下系統,只要在mainfest中註冊了,則自動授權,不會彈出許可權詢問的對話方塊。2.android6.0系統,同一組許可權中如果有乙個許可權動態授權,則改組的所有的許可權自動授權 需要先在mainfest中註冊 3.android 8.0系統。在 android 8.0 ...

android 動態申請許可權

private string permissions newstring 檢查是否有相應的許可權 checkdevicepermission permissions,newpermissionlistener override public void permissionfail private f...

舉例 Android動態申請許可權

舉例 android自定義dialog 做出 確定 取消 的選擇 還是一貫的風格,直接上 android name android.permission.camera android name android.permission.change network state android name ...