1. 程式人生 > >android:android6.0執行許可權管理

android:android6.0執行許可權管理

為了更好的保護了使用者的隱私,在Google釋出的android6.0中推出了新的許可權機制,Google將許可權分為兩類,一類是Normal Permissions,這類許可權一般不涉及使用者隱私,是不需要使用者進行授權的,比如手機震動、訪問網路等;另一類是Dangerous Permission,當app需要使用者授予不恰當的許可權的時候,使用者可以拒絕,一般是涉及到使用者隱私的,需要使用者進行授權,當app需要使用者授予不恰當的許可權的時候,使用者可以拒絕,比如讀取sdcard、訪問通訊錄等。

一、執行許可權管理

當我們在開發中做訪問通訊錄、撥打電話等操作時,Android Studio就會給我們下面的提示:

Call requires permission which may be rejected by user: code should explicitly check to see if permission is available (with `checkPermission`) or explicitly handle a potential `SecurityException`

當我們點選”Add permission check”時:
這裡寫圖片描述

Android Studio就會為我們新增如下程式碼:

 if (ActivityCompat.checkSelfPermission(this
, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults)
// to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return; }

然後我們對這段程式碼做下處理,處理後例項程式碼如下:

 public void callPhone() {
     Intent intent = new Intent(Intent.ACTION_CALL);
     Uri data = Uri.parse("tel:" + "10086");
     intent.setData(data);

     if (ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
         ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, MY_PERMISSIONS_REQUEST_CALL_PHONE);
     } else {
         startActivity(intent);
     }
 }

然後對申請許可權處理後的返回資料做一下處理,程式碼如下:

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {

        if (requestCode == MY_PERMISSIONS_REQUEST_CALL_PHONE) {
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                callPhone();
            } else {
                // Permission Denied
                Toast.makeText(MainActivity.this, "Permission Denied", Toast.LENGTH_SHORT).show();
            }
            return;
        }
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }

注意:
申請許可權也需要新增許可權,必須要在清單檔案中新增許可權,否則點選撥打電話無效果:

<uses-permission android:name="android.permission.CALL_PHONE" />

到了這裡咱們就處理完了,讓我們看一下執行效果:
這裡寫圖片描述

到了這裡小夥伴們應該知道怎麼用了吧。希望這篇部落格能夠為小夥伴們提供一些幫助。

相關推薦

androidandroid6.0執行許可權管理

為了更好的保護了使用者的隱私,在Google釋出的android6.0中推出了新的許可權機制,Google將許可權分為兩類,一類是Normal Permissions,這類許可權一般不涉及使用者隱私,是不需要使用者進行授權的,比如手機震動、訪問網路等;另一類是D

Android6.0網路許可權管理

Android 6.0 Marshmallow(棉花糖)是目前谷歌公佈的最新版本的作業系統,其中一項改進是針對程式呼叫許可權控制又進一步升級。 在之前的Android系統中,使用者在安裝應用時會收到一堆許可權申請,比如允許應用訪問相簿、位置、通訊錄等等。但是使用者一般都會忽

android6.0動態許可權管理案例-打電話案例

package com.example.phone2; import android.Manifest; import android.content.Intent; import android.content.pm.PackageManager; import android.ne

android6.0動態許可權管理,小米bug適配

在Android6.0以後開始,對於部分敏感的“危險”許可權,需要在應用執行時向用戶申請,只有使用者允許的情況下這個許可權才會被授予給應用。這對於使用者來說,無疑是一個提升安全性的做法。那麼對於開發者,應該怎麼做呢? Android6.0規定的危險許可權有下面

Android學習筆記-Android6.0執行許可權

Android許可權機制,在Android6.0之前,其實一直很簡單,在AndroidManifest.xml中進行許可權宣告,通過一個Intent呼叫即可。 以打電話為例: <uses-permission android:name="andro

Android 6.0: 動態許可權管理的解決方案

歡迎Follow我的GitHub, 關注我的CSDN. Android 6.0版本(Api 23)推出了很多新的特性, 大幅提升了使用者體驗, 同時也為程式設計師帶來新的負擔. 動態許可權管理就是這樣, 一方面讓使用者更加容易的控制自己的隱

Android 從相簿或者拍照設定頭像,相容Android6.0許可權問題

                                    平時開發中我們會需要設定使用者頭像  從手機相簿或者拍照設定,在Android6.0以前還不用考慮許可權問題,到了6.0後還需要考慮許可權問題,這裡我們就來給大家一起處理下。有些可能不完善大家自己完善

Android6.0執行許可權處理-超簡單封裝

之前除錯的時候,出現了一個問題,就是當我開啟二維碼掃描介面的時候,對於一部分手機一直不會出現那個掃描框,這點我也很是鬱悶,這不好整啊,畢竟二維碼介面是用的別人的,怎麼改啊?這個時候我分析了一下原因,最後知道只有部分6.0的手機才會出現這種情況,那麼這就簡單了。下

這可能是最精簡的Android6.0執行許可權處理,70行程式碼的工具類。附:各種許可權詳細處理

0x00:前言 對於Android6.0執行時許可權的處理方式網上有很多,包括註解,RxJava等等。一直沒有正面提到我關心的問題--如果我不在Activity或者Fragment裡面,需要執行時許可權該怎麼去做?導致我開始一直以為執行時許可權的處理必需要在Activity

Android6.0執行許可權-sd卡許可權處理方式

我們的app一般都會需要快取和一些圖片的儲存,當然我們的目錄可以是自己的私有目錄, getExternalCacheDir 或者 getCacheDir 是不需要許可權的,但是如果需要在sd卡下儲存呢,此時需要 WRITE_EXTERNAL_STORAGE 許可權.實際上

Android6.0動態許可權獲取框架RxPermission(基於RxJava2)

首先在build.gradle中新增依賴庫 rxjava和retrofit: compile 'io.reactivex.rxjava2:rxjava:2.x.y' compile 'io.reactivex.rxjava2:rxandroid:2.0.

android6.0執行許可權完美封裝

前幾天看了郭大神的執行時許可權的專講,深受啟發,由於現在基於目前專案中的執行時許可權封裝的還不是那麼完美,趁著郭神建議的還是歷歷在目。於是把它完整的敲了下來。並在此基礎上新增上自己的一些見解,封裝成一個完整的demo,希望與大家進行交流與。 在這裡我進行了簡單的在acti

Android6.0執行許可權

一、執行時許可權 所謂執行時許可權,指的是在Android6.0及以上版本中,在app執行時才請求相關許可權,從而讓每項許可權都在使用者知情的情況下被授權(當然使用者可以拒絕)。而不同於Android6.0之前在安裝app時告知使用者獲取全部許可權。 關於許

淺談Android6.0執行許可權

引言 從 Android 6.0(API 23)開始,使用者開始在應用執行時向其授予許可權,而不是在應用安裝時授予。這種許可權機制可以讓使用者更好的管理應用的許可權,保障使用者隱私。 系統許可權分類 正常許可權不會直接給使用者隱私權帶來風險。如果您的應用

AndPermission是一個執行許可權管理庫,相容Android O,同時最大程度上相容了國產機

特性 支援申請許可權組,相容Android8.0,最大程度上相容國產機。 鏈式呼叫,一句話申請許可權,不需要判斷版本和是否擁有某許可權。 支援註解回撥結果、支援Listener回撥結果。 對於某個許可權拒絕過一次後,下次申請可以使用RationaleDailo

Android6.0執行許可權,拒絕了許可權還返回獲取成功

如題:禁用、詢問的許可權,居然還返回許可權獲取成功 推薦一個很好的專案:AndPermission 不用回來感謝了喂! 這個問題在專案中,一直存在, 主要是第三方廠商各種改,返回的狀態不正常

Android6.0執行許可權-----AndPermission的使用

最近才開始用AndPermission庫,感覺非常不錯,在使用的過程中,順便就將它的用法寫下來吧。 首先是AndPermission庫的引入,通過新增依賴即可: dependencies { ...compile 'com.yanzhenjie:permissi

Android O 8.0 執行許可權適配方案

一.序 在之前的文章聊聊Android M 6.0 的執行時許可權曾提到過,Google Play開發者明年勢必要努力將targetsdkversion升級到26的過程中。官網的文件:向 Android 8.0 遷移應用 已經給大家了一個升級指南。當然動態許

Android6.0執行許可權處理(專案中使用到的一種形式,沒有使用第三方庫)

相信大家都知道Android6.0之後的許可權申請跟之前的版本有一個很大的差別,那就是任何危險許可權都必須經過使用者的手動選擇是否接受來做相應的操作,而Android6.0之前安裝應用的過程中是預設選

小米,紅米手機android 6.0以下 許可權管理

紅米小米等手機在android6.0以下加了許可權管理,用android自身帶的checkpermisson方法時,永遠返回true,因此在獲取許可權為true時,加入判斷錄音許可權: Log.e("MainActivity", "onPermissionGranted");