1. 程式人生 > >解決Android6.0+撥打電話許可權問題

解決Android6.0+撥打電話許可權問題

針對即使獲取了撥打電話的許可權依然報錯問題的解決方案

針對即使獲取了撥打電話的許可權依然報錯問題的解決方案
private static final int MY_PERMISSIONS_REQUEST_CALL_PHONE = 1;
// 檢查是否獲得了許可權(Android6.0執行時許可權)
if (ContextCompat.checkSelfPermission(Your Activity,Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED){
// 沒有獲得授權,申請授權
if (ActivityCompat.shouldShowRequestPermissionRationale(Your Activity,Manifest.permission.CALL_PHONE)) {
// 返回值:
//如果app之前請求過該許可權,被使用者拒絕, 這個方法就會返回true.
//如果使用者之前拒絕許可權的時候勾選了對話方塊中”Don’t ask again”的選項,那麼這個方法會返回false.
//如果裝置策略禁止應用擁有這條許可權, 這個方法也返回false.
// 彈窗需要解釋為何需要該許可權,再次請求授權
Toast.makeText(Your Activity, "請授權!", Toast.LENGTH_LONG).show();
// 幫跳轉到該應用的設定介面,讓使用者手動授權
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivity(intent);
}else{
// 不需要解釋為何需要該許可權,直接請求授權
ActivityCompat.requestPermissions(Your Activity,new String[]{Manifest.permission.CALL_PHONE},MY_PERMISSIONS_REQUEST_CALL_PHONE);
}
}else {
// 已經獲得授權,可以打電話
CallPhone();
}
private void CallPhone() {
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_CALL);
    //url:統一資源定位符
    //uri:統一資源標示符(更廣)
    intent.setData(Uri.parse("tel:" + ***電話號碼***));
    //開啟系統撥號器
    startActivity(intent);
}



PS:我從專案上隨便扒一段程式碼也沒想到閱讀這麼多,可能很多人都遇到了這個問題,給大家留個這個吧,要不然很愧疚啊。。

https://github.com/yanzhenjie/AndPermission



相關推薦

解決Android6.0+撥打電話許可權問題

針對即使獲取了撥打電話的許可權依然報錯問題的解決方案 針對即使獲取了撥打電話的許可權依然報錯問題的解決方案 private static final int MY_PERMISSIONS_REQUE

解決android6.0開啟攝像頭許可權"Failed to connect to camera service"的問題 ,動態獲取許可權

android6.0使用camera.open()時需要在onCreate()裡面新增如下程式碼,否則會報錯"Failed to connect to camera service": if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)

解決android6.0開啟攝像頭許可權"Failed to connect to camera service"的問題 ,動態獲取許可權

android6.0使用camera.open()時需要在onCreate()裡面新增如下程式碼,否則會報錯"Failed to connect to camera service": if (Build.VERSION.SDK_INT >= Build.VERSIO

從根本解決Android6.0許可權檢測問題 附demo

耐心讀完,理解許可權處理的關鍵點。最後附有原始碼~~ 一、背景: android6.0系統開啟了敏感許可權使用者授權功能。如果開發的APP中不新增許可權獲取申請,預設是不會彈框提示使用者授權的,如此以來系統預設禁止使用拍照、儲存等敏感許可權,如果開發者設

動態一次獲取多種android6.0以上的許可權

原文地址:https://blog.csdn.net/qq_27634797/article/details/76617334 android6.0及以上版本區分了:普通許可權和危險許可權。普通許可權可以直接在清單檔案裡面申請, 危險許可權不僅要在清單檔案裡面申請,還要在程式碼

BaseActivity關於Android6.0以後的許可權問題封裝

詳細許可權問題的原始碼封裝,直接就能用 import android.content.DialogInterface; import android.content.pm.PackageManager; import android.os.Build; import android.s

Android6.0手動加許可權

private static final int REQUEST_EXTERNAL_STORAGE = 0; private static final int REQUEST_CAMERA = 2; private static String[] PERMISSIONS_STORAGE = {

cordova 使用WKWebView 適配iphoneX及解決不能撥打電話問題

先安裝外掛 cordova-plugin-wkwebview-engine 然後修改外掛中CDVWKWebViewEngine.m檔案,下面是全部程式碼,修改部分已經進行註釋     /* Licensed to the A

Android6.0動態申請許可權的兩種辦法

Android 6.0 動態申請許可權的兩種辦法 最近在寫專案中被安卓6.0動態申請許可權所困惑,有一些自己糾結的問題,今天閒著沒事就想著寫篇部落格來分享自己遇到的問題和解決辦法。 一開始我在網上找到的申請許可權的程式碼是ContextCom

解決Android6.0以上掃描WIFI獲得列表為空

我們知道Android SDK23之後Google對許多許可權進行了修改,比如wifi和藍芽。在Android6.0及以上掃描WIFI必須先開啟GPS,否則掃描得到的WIFI列表為空。解決方法如下: 1.首先在AndroidManifest.xml檔案中再增加以下許可權

Android6.0中設定許可權時候的SecurityException異常的處理

說來也巧了,今天碰到了一個特別奇怪的問題。上午寫了一個小demo其中有一個功能是獲取通訊的,大家肯定知道這時候肯定要新增一個許可權: <!-- 讀聯絡人許可權 --> <uses-permission android:name="andr

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

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

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

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

Android Permission許可權列表以及Android6.0以後獲取許可權

Android程式在執行某些敏感問題時需要獲取許可權,比如獲取通訊錄許可權,獲取相機許可權,獲取定位許可權等等,針對Android6.0以前,只需要在AndroidManifest.xml檔案中使用類似於 <uses-permission android:name

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

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

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

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

Android6.0動態申請許可權的框架RxPermission

1.專案的git地址 https://github.com/lantian0314/StudioTest.git 2.首先配置app中的build.gradle以及manifest  compile 'com.tbruyelle.rxpermissions:rxpermis

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

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

Android撥打電話許可權總結

android在6.0和6.0以上撥打電話的許可權宣告 /** * 打電話 * * @param phoneNumber */ protected void startCallPhone(String

Android6.0執行時許可權

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