① 在android AndroidManifest.xml文件中怎樣設置訪問網路的許可權
在<manifest標簽下添加語句:
<uses-permission
android:name="android.permission.INTERNET"/>
即可申請到訪問網路的許可權
拓展內容:
Android
6.0
運行時許可權的介紹
在保護用戶隱私方面:Android6.0為了更好的保護個人隱私,添加了運行時許可權:分為兩類,一類是Normal
Permissions,這類許可權不涉及個人隱私,不需要用戶進行授權,比如手機震動,訪問網路;一類是Dangerous
Permissions,這類許可權涉及個人隱私,需要用戶進行授權,比如讀取SD卡,訪問通訊錄等。
在用戶操作方面:當執行敏感操作之前彈出對話框,請求許可權,可以拒絕,可以同意;可以在設置頁面對APP的許可權進行查看,以及對單個許可權進行授權或者解除授權。
② android 自定義的launcher在6.0後需要動態申請許可權
6.0許可權的基本知識,以下是需要單獨申請的許可權,共分為9組,每組只要有一個許可權申請成功了,就默認整組許可權都可以使用了。
group:android.permission-group.CONTACTS
permission:android.permission.WRITE_CONTACTS
permission:android.permission.GET_ACCOUNTS
permission:android.permission.READ_CONTACTS group:android.permission-group.PHONE
permission:android.permission.READ_CALL_LOG
permission:android.permission.READ_PHONE_STATE
permission:android.permission.CALL_PHONE
permission:android.permission.WRITE_CALL_LOG
permission:android.permission.USE_SIP
permission:android.permission.PROCESS_OUTGOING_CALLS
permission:com.android.voicemail.permission.ADD_VOICEMAIL group:android.permission-group.CALENDAR
permission:android.permission.READ_CALENDAR
permission:android.permission.WRITE_CALENDAR group:android.permission-group.CAMERA
permission:android.permission.CAMERA group:android.permission-group.SENSORS
permission:android.permission.BODY_SENSORS group:android.permission-group.LOCATION
permission:android.permission.ACCESS_FINE_LOCATION
permission:android.permission.ACCESS_COARSE_LOCATION group:android.permission-group.STORAGE
permission:android.permission.READ_EXTERNAL_STORAGE
permission:android.permission.WRITE_EXTERNAL_STORAGE group:android.permission-group.MICROPHONE
permission:android.permission.RECORD_AUDIO group:android.permission-group.SMS
permission:android.permission.READ_SMS
permission:android.permission.RECEIVE_WAP_PUSH
permission:android.permission.RECEIVE_MMS
permission:android.permission.RECEIVE_SMS
permission:android.permission.SEND_SMS
permission:android.permission.READ_CELL_BROADCASTS
以下是普通許可權,只需要在AndroidManifest.xml中申請即可。
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS③ Android 6.0 讀寫SD卡許可權問題
Android 6.0 下默認存儲SD卡,使用原生FMRadio生成的文件保存到內部存儲中
【預置條件】插入T卡【操作步驟】設置>存儲設備和USB>選擇SD卡為默認存儲>收音機錄音【實際結果】收音機的錄音文件未保存到T卡【預期結果】收音機的錄音文件保存到T卡【復現概率】10/10
此外,SoundRecorder默認存儲SD卡,生成的文件卻可以保存到SD卡中
1、收音機文件沒有保存到指定的SD卡目錄下,因此可能是文件的路徑不對。
2、進入設置中,切換默認存儲位置,內部存儲或者SD卡,每次切換都會修改系統中某一屬性值。
3、當收音機文件保存的時候,必須要讀取當前系統的默認存儲路徑,然後生成自己的文件路徑。
STEP1、初步解決方案,但沒有生效,引入新問題
對比 SoundRecorder ,根據GIT庫中,之前的同事的修改記錄,找到可能的解決方案,修改如下:
引入新的問題,此時,點擊 Start Recording 會提示內部錯誤。
分析Log發現,由於許可權拒絕,拋出IO異常
01-01 07:35:38.167 7467 7467 W System.err: java.io .IOException: open failed: EACCES (Permission denied)
STEP2、Android M 下SD卡讀寫許可權問題
分析由於許可權問題後,結合Android M new design,開始查找文檔,尋找解決Android M 下SD卡讀寫許可權問題
Android6.0中的運行時請求許可權
後來,試了好幾種方法,但都沒有用,以及報問題「EACCES (Permission denied)」
STEP3、再分析可能是運行時許可權問題
判斷APP運行時許可權如下:
發現此時,FMRadio對於的組許可權如下:
com.android.fmradio Groups: 1013 3002 3003 9997 50010
com.android.soundrecorder Groups: 1015 1023 3003 9997 50105
根據 系統許可權 的定義,有興趣的同學可以去看一下這個文件 system/core/include/private/android_filesystem_config.h
分析這些Gid發現:
1015 為sdcard_rw,1023 為media_rw許可權
因此,得出結論如下
1、首先修改AndroidManifest.xml文件,新增許可權,確保FMRadio應用級的許可權;
2、原生FMRadio使用過程中,會進行運行時的許可權檢查,故FMRadio運行時應該拿到了WRITE_EXTERNAL_STORAGE,以及READ_EXTERNAL_STORAGE許可權,
3、但是由於FMRadio本身不具備「1015,1023」組許可權,這些許可權無效,仍然無法對SD卡進行讀寫操作。
STEP4、最終解決方案
在 STEP1 的修改基礎上,在框架層,許可權對應組中給予FMRadio相應的組許可權,新增修改如下:
frameworks/base/data/etc/platform.xml
重編framework.jar, 將修改後的jar文件push到手機,重啟
此時,再檢查FMRadio對於的組許可權如下:
com.android.fmradio Groups: 1013** 1015 1023** 3002 3003 9997 50010
到此為止,
④ 如何設定Android 6.0 應用程序許可權
打開手機設置頁面