1. 程式人生 > >Android撥打電話許可權總結

Android撥打電話許可權總結

android在6.0和6.0以上撥打電話的許可權宣告


    /**
     * 打電話
     *
     * @param phoneNumber
     */
    protected void startCallPhone(String phoneNumber) {
        this.phoneNuber = phoneNumber;

        //判斷Android版本是否大於23
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            int checkCallPhonePermission = ContextCompat.checkSelfPermission(mContext, Manifest.permission.CALL_PHONE);

            if
(checkCallPhonePermission != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, MY_PERMISSIONS_REQUEST_CALL_PHONE); return; } else { callPhone(phoneNumber); } } else
{ callPhone(phoneNumber); // 檢查是否獲得了許可權(Android6.0執行時許可權) if (ContextCompat.checkSelfPermission(mContext, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { // 沒有獲得授權,申請授權 if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) mContext, Manifest.permission.CALL_PHONE)) { // 返回值:
// 如果app之前請求過該許可權,被使用者拒絕, 這個方法就會返回true. // 如果使用者之前拒絕許可權的時候勾選了對話方塊中”Don’t ask again”的選項,那麼這個方法會返回false. // 如果裝置策略禁止應用擁有這條許可權, 這個方法也返回false. // 彈窗需要解釋為何需要該許可權,再次請求授權 TastyToastUtils.newInstance(mContext).ERROR("請授權"); // 幫跳轉到該應用的設定介面,讓使用者手動授權 Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); Uri uri = Uri.fromParts("package", getPackageName(), null); intent.setData(uri); startActivity(intent); } else { // 不需要解釋為何需要該許可權,直接請求授權 ActivityCompat.requestPermissions((Activity) mContext, new String[]{Manifest.permission.CALL_PHONE}, MY_PERMISSIONS_REQUEST_CALL_PHONE); } } else { // 已經獲得授權,可以打電話 callPhone(phoneNumber); } } } private void callPhone(String phoneNumber) { // 撥號:啟用系統的撥號元件 -- 直接撥打電話 //Intent intent = new Intent(); // 意圖物件:動作 + 資料 //intent.setAction(Intent.ACTION_CALL); // 設定動作 //Uri data = Uri.parse("tel:" + phoneNumber); // 設定資料 //intent.setData(data); //startActivity(intent); // 啟用Activity元件 //開啟撥號介面,填充輸入手機號碼,讓使用者自主的選擇 Intent intent = new Intent(Intent.ACTION_DIAL,Uri.parse("tel:"+phoneNumber)); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } // 處理許可權申請的回撥 @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { case MY_PERMISSIONS_REQUEST_CALL_PHONE: { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // 授權成功,繼續打電話 callPhone(this.phoneNuber); } else { // 授權失敗! TastyToastUtils.newInstance(mContext).ERROR("授權失敗"); } break; } } }
注:在清單檔案中宣告CALL_PHONE許可權
    <uses-permission android:name="android.permission.CALL_PHONE"/>

相關推薦

Android撥打電話許可權總結

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

Android撥打電話號功能

在本篇博文中將為大家提供兩種用程式碼實現調起電話簿,打電話功能,其實很簡單,只是新增一個許可權和一個方法的事 1、新增許可權 <uses-permission android:name="android.permission.CALL_PHONE" /> 2、調起撥號頁面,不

Android撥打電話工具類

  歡迎關注技術公眾號,微訊號搜尋ColorfulCode 程式碼男人 分享技術文章,投稿分享,不限技術種類,不限技術深度,讓更多人因為分享而受益。 動態許可權框架使用的Acp,封裝撥打電話兩種常用模式,程式碼如下: public class CallPhoneU

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

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

Android撥打電話和發簡訊的簡單程式

在模擬器上實現打電話和發簡訊,另外還可以在命令列下或者可以利用Eclipse的ADT外掛的Emulator control實現,具體方法去如下。 命令列: 假設你現在開啟的模擬器的埠號(模擬器的標題欄上有)為5554。 1.開啟命令列,輸入telnet localhost

Android撥打電話

1. 新增許可權 這是由於撥打電話屬於手機底層的服務,與使用者隱私及通話費等相關,因此,程式必須取得相關許可權。 <uses-permission android:name="a

Android撥打電話等功能實現及其延伸

前言 專案中經常用到點選一個button,直接撥打電話的功能。今天就由此功能系統的記錄一下相關知識點。 一、撥打電話功能 有兩種方法: 第一種如下: Intent intent = new Intent(Intent.ACTION_CALL);

android 撥打電話 號碼判斷

      AndroidManifest中新增打電話許可權 <uses-permission android:name="android.permission.CALL_PHONE"/> public class boda extends Activity

Android動態申請許可權(撥打電話)

Android許可權大全:        Android許可權有上百個,那麼我們如何在呼叫許可權的時候,判斷app是否被授予某項許可權呢,所以這時候就需要動態去獲取許可權了,如果該許可權已被賦予,就能直接使用該功能,否則就需要去申請許可權。        這裡只需要三個方法,

android傳送簡訊填入手機號碼,6.0動態請求許可權撥打電話

//發簡訊填入號碼 Uri uri = Uri.parse("smsto:" + phone); Intent sendIntent = new Intent(Intent.AC

android呼叫撥打電話(包括執行時許可權

/** * 撥打電話(跳轉到撥號介面,使用者手動點選撥打) * * @param phoneNum 電話號碼 */ public void diallP

Android動態許可權總結

從Android6.0開始,Android系統提供動態申請許可權的機制, APP在使用危險許可權時,需要使用者的授權才可進一步操作。 許可權申請方式 Android系統中許可權申請的方式有兩種,如下圖所示: 靜態申請 Android6.0以前的系統(API < 23)採用的這種方

unity+android撥打電話

package com.luoyikun.call; import android.app.Activity; import android.app.Fragment; import android.content.Context; import androi

84.android 指定哪個SIM卡撥打電話

//第一步 許可權: <uses-permission android:name="android.permission.CALL_PHONE" /> //Activity裡使用:  //撥號請求碼 public static final i

Android 使用者組許可權,SELinux心得總結

這裡要分兩個部分來說,一個是Linux許可權組的設定,一個是SELinux。 我們先不考慮SELinux。先單獨來說Linux許可權組。 因為要想對某個檔案進行操作(read,write,execute等),必須先滿足Linux許可權組的規則,然後再滿足SeLinux的a

Android許可權總結

訪問登記屬性 android.permission.ACCESS_CHECKIN_PROPERTIES ,讀取或寫入登記check-in資料庫屬性表的許可權 獲取錯略位置 android.pe

Android 實現直接撥打電話

撥打電話事件 Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:所要撥打的號碼"));

Android虛擬機發送簡訊和撥打電話

Android的emulator是已經包含了gsm 模組,可以模擬電話與簡訊進行除錯(就不用花太多冤枉錢) 首先,肯定是開啟虛擬機器: emulator -avd XXXXXX -scale 0.8& 這兩個引數就不用說了,第一個是avd 名稱,第二個是

Android html5頁面撥打電話號碼發簡訊發郵箱

 1. 撥打電話 在電話號碼前面可以加上 + (加號)表示國際號碼。如: 最常用WEB頁面JS實現一鍵撥號的電話撥打功能 例子: <ahref="tel:10086">10086</a> 使用wtai協議進行撥打電話 <ahref="

Android VOIP撥打電話機制分析

建立.aidl檔案 ISipService.aidl內容如下: [java] view plaincopyprint? /**   * Copyright (C) 2010-2012 Regis Montoya (aka r3gis