Android 應用適配 Android 7.0 權限要求詳解
對于 Android 6.0 以下 , 對于 Android 應用的權限要求是在安裝應用的時候默認直接獲??;但是對于 Android 6.0 以及以上,對于應用權限的獲取具有更高的要求。應用只有獲取到了相關權限才可以正常運行,相反如果用戶沒有賦予相關權限則應用直接退出甚至崩潰,無法進行正常的運行。
具體可以參考下列獲取手機定位,手機讀寫存儲和手機狀態(tài)權限的事例代碼:
public class AppMainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//在App中需要請求權限才能執(zhí)行用戶的操作
getPermissionToReadUserContacts();
}
//定義請求
private static final int READ_CONTACTS_REQUEST = 1;
//當用戶執(zhí)行的操作需要權限時候進行詢問
public void getPermissionToReadUserContacts() {
/**
* 1)使用ContextCompat.chefkSelfPermission(),因為Context.permission
* 只在棒棒糖系統(tǒng)中使用
* 2)總是檢查權限(即使權限被授予)因為用戶可能會在設置中移除你的權限*/
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE)
!= PackageManager.PERMISSION_GRANTED) {
//權限為獲取,檢查用戶是否被詢問過并且拒絕了,如果是這樣的話,給予更多
//解釋
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_FINE_LOCATION) ||
ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_EXTERNAL_STORAGE) ||
ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_PHONE_STATE)) {
//在界面上展示為什么需要讀取聯(lián)系人
Toast.makeText(this, "需要定位位置權限,手機電話權限和存儲權限才可以正常工作", Toast.LENGTH_SHORT).show();
}
//發(fā)起請求獲得用戶許可,可以在此請求多個權限
ActivityCompat.requestPermissions(this, new String[]{
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.READ_PHONE_STATE},
READ_CONTACTS_REQUEST);
}
}
//從requestPermissions()方法回調結果
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
//確保是我們的請求
if (requestCode == READ_CONTACTS_REQUEST) {
if (grantResults.length == 3 && grantResults[0] == PackageManager.PERMISSION_GRANTED
&& grantResults[1] == PackageManager.PERMISSION_GRANTED
&& grantResults[2] == PackageManager.PERMISSION_GRANTED) {
System.out.println("應用權限獲取成功");
} else {
System.out.println("應用權限獲取失敗");
}
} else {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
}
以上這篇Android 應用適配 Android 7.0 權限要求詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Android kotlin使用注解實現(xiàn)防按鈕連點功能的示例
這篇文章主要介紹了Android kotlin使用注解實現(xiàn)防按鈕連點功能的示例,幫助大家更好的理解和學習使用Android,感興趣的朋友可以了解下2021-03-03
Android進階Hook攔截系統(tǒng)實例化View過程實現(xiàn)App換膚功能
這篇文章主要為大家介紹了Android進階Hook攔截系統(tǒng)實例化View過程實現(xiàn)App換膚功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01
Android中使用ViewStub實現(xiàn)布局優(yōu)化
ViewStub是Android布局優(yōu)化中一個很不錯的標簽/控件,直接繼承自View。雖然Android開發(fā)人員基本上都聽說過,但是真正用的可能不多。今天我們就來詳細探討下ViewStub的使用2016-09-09
Android UI實現(xiàn)廣告Banner輪播效果
這篇文章主要為大家詳細介紹了Android UI實現(xiàn)廣告Banner輪播效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12

