1. 程式人生 > >Android6.0【執行時申請許可權】的分析

Android6.0【執行時申請許可權】的分析

,#情景:
Android 6.0之後。

用法:

普通許可權在清單檔案中新增,危險許可權需要動態申請許可權。

例子:

比如開發中的,SD卡許可權的申請,電話的許可權,以及讀取聯絡人等方面的許可權申請。
如:

Intent.ACTION_DIAL,表示開撥號介面,不需要宣告許可權。
Intent.ACTION_CALL,是系統內建直接打電話動作,需要宣告許可權。

程式碼如下(清單檔案也要註明許可權CALL_PHONE):

/*
 * Copyright (C) 2016, TP-LINK TECHNOLOGIES CO., LTD.
 *
 * MainCallActivity.java
 *
 * Description
 *
 * Author nongzhanfei
 *
 * Ver 1.0, 12/25/16, NongZhanfei, Create file
 */
package com.tplink.callphone; import android.Manifest; import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.ActivityCompat; import
android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainCallActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btnMakeCall = (Button) findViewById(R.id.make_call); btnMakeCall.setOnClickListener(new
View.OnClickListener() { @Override public void onClick(View v) { //進來就檢查請求的許可權是否被授權了,還未被授權就請求許可權。 if (ActivityCompat.checkSelfPermission(MainCallActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { requestCallPermission(); } else { //同意則撥打電話 makeCall(); } } private void requestCallPermission() { //請求的許可權的數量(可多個),請求碼,(便於區分不同時機的不同的許可權請求)。 requestPermissions(new String[]{Manifest.permission.CALL_PHONE}, 1); } }); } private void makeCall() { try { //普通模式-直接撥打 Intent intent = new Intent(Intent.ACTION_CALL); //普通電話 intent.setData(Uri.parse("tel:10086"));//如果想直接撥打110需要緊急模式,否這彈出撥號鍵盤 startActivity(intent); } catch (SecurityException e) { e.printStackTrace(); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case 1: //返回的內容中,我們請求的許可權如果經過同意,就可以撥打電話 if (grantResults.length > 0 && grantResults[0] == getPackageManager().PERMISSION_GRANTED) { makeCall(); } else { Toast.makeText(this, "yout denied the permission", Toast.LENGTH_SHORT).show(); } break; default: break; } } }

拓展:

如果把10086改成110,那麼就不會自動撥號了,只會彈出撥號介面,因為ACTION_CALL代表普通撥號。

            Intent intent = new Intent(Intent.ACTION_CALL);
            intent.setData(Uri.parse("tel:10086"));
            startActivity(intent);

所以需要注意以下資訊:

系統撥打電話可以呼叫action如下:

  • ACTION_CALL(普通),

  • ACTION_CALL_EMERGENCY (緊急電話),

  • ACTION_CALL_PRIVILEGED(系統專屬),

而普通應用要撥打電話只能呼叫ACTION_CALL。

相關推薦

Android6.0執行申請許可權分析

,#情景: Android 6.0之後。 用法: 普通許可權在清單檔案中新增,危險許可權需要動態申請許可權。 例子: 比如開發中的,SD卡許可權的申請,電話的許可權,以及讀取聯絡人等方面的許可權申請。 如: Intent.ACTION_DI

Android 6.0執行申請許可權解釋與例項

Android 6.0在執行時申請許可權 從android 6.0(API23)開始,當app執行時使用者授予使用者的許可權,而不是在安裝程式的時候。 系統許可權分為2種,分別為normal和dangerous. Normal permission:對於

Android6.0執行請求許可權

從 Android 6.0(API 級別 23)開始,使用者開始在應用執行時向其授予許可權,而不是在應用安裝時授予。此方法可以簡化應用安裝過程,因為使用者在安裝或更新應用時不需要授予許可權。它還讓使用者可以對應用的功能進行更多控制;例如,使用者可以選擇為相機

Android6.0執行許可權

聊一聊Android 6.0的執行時許可權 Android 6.0,代號棉花糖,自發布伊始,其主要的特徵執行時許可權就很受關注。因為這一特徵不僅改善了使用者對於應用的使用體驗,還使得應用開發者在實踐開發中需要做出改變。 沒有深入瞭解執行時許可權的開發者通常會有很多疑問,比如什麼是執行時

適配android6.0執行許可權檢查機制

前言 清明放假終於結束了,趕緊寫點東西來脈動回來。這是一篇偏概念性的文章,文字偏多,所以別捉急,慢慢看。 現在高版本的android系統市場佔有率提升的非常快,這依賴於智慧手機越來越便宜,越來越普遍,新手機一般都會搭載高版本的android系統,來豐富使用者

Android6.0及以上版本申請許可權講解

我們先來了解一個概念 在執行時請求許可權 從 Android 6.0(API 級別 23)開始,使用者開始在應用執行時向其授予許可權,而不是在應用安裝時授予。此方法可以簡化應用安裝過程,因為使用者在安裝或更新應用時不需要授予許可權。它還讓使用者可以對應用的功能進行更多控制;

Android6.0寫入儲存動態申請許可權

由於安卓6.0的限制,特殊許可權在AndroidManifest檔案中設定不起效果,需要在程式碼中動態設定。下面的程式碼是用於申請訪問或寫入儲存的許可權,如下圖.需要在AndroidManifest檔案中配置許可權。(必須) <uses-permission andro

Android 6.0執行許可權 批量申請

Android 6.0,代號棉花糖,自發布伊始,其主要的特徵執行時許可權就很受關注。因為這一特徵不僅改善了使用者對於應用的使用體驗,還使得應用開發者在實踐開發中需要做出改變。 沒有深入瞭解執行時許可權的開發者通常會有很多疑問,比如什麼是執行時許可權,哪些是執行時

Android6.0 讀寫SD卡許可權動態申請

轉自:http://bbs.csdn.net/topics/391985867 安卓6.0以上,進行了許可權管理 不止要在AndroidManifest.xml裡面新增許可權<uses-permission android:name="android.permiss

華為手機搭載android6.0讀取檔案,需要手動檢測讀取許可權

// Storage Permissions private static final int REQUEST_EXTERNAL_STORAGE = 1; private static String

Android 6.0執行獲取許可權詳解

最近在工作過程中會遇到,明明已經在AndroidManifest.xml中配置了許可權,但是就是沒有作用,百度了之後才發現現在在應用系統大於等於6.0的手機上面,需要動態的獲取許可權。就是當你需要這個許可權的時候,需要手機給使用者一個提示選擇是否同意開啟這個許

android studio 6.0以上執行許可權

AlertDialog mPermissionDialog;/** * 不再提示許可權 時的展示對話方塊 */private void showPermissionDialog() {     if (mPermissionDialog == null) {         mPermissionDialog

Android6.0運行權限(基於RxPermission開源庫)

art cti 將不 轉載 誤差 title 特殊 什麽是 roi 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 前言   在6.0以前的系統,都是權限一刀切的處理方式,只要用戶安裝,Manifest申請的權限都會被賦予,並且安裝後權限也撤銷不了。   And

執行力決定命第14集《職場五大溝通習慣》

執行力、職場、習慣、目標、升職、加薪「音頻原文」http://dwz.cn/6sB6v2大家好,我是林琳笨,今天跟大家一起分享《職場5大溝通習慣》,最近經常收到粉絲後臺留言,問我職場中如何溝通,我回想了下,至少有20種方法,今天和大家分享5個我認為比較重要的點。分別是:數字說話、直接回答問題、再次確認、每天通

執行力決定命第7集《不擇手段的達到目的》

職場、執行力、任務、目標、承諾、升職「音頻原文」http://dwz.cn/6sB0GA大家好,我是林琳笨,今天一起分享《不擇手段的達到目的》,這個話題與執行力的關系非常大,甚至說沒有這樣的心態,你很難到達目的。因為往往你挺累,但根本達不到目的,不是執行力強不強,是根本沒有執行力。但我有點尤預要不要分享這個話

執行力決定命第3集《好的職業習慣,讓執行力提高一倍》

職場、習慣、升職、培訓「音頻原文」http://dwz.cn/6sANwk大家好,我是林琳笨,今天和大家分享《好的職業習慣,讓執行力提高一倍》,先簡單的介紹8個職業習慣的特征,有機會把每一個點拿出來詳細講解。 第一個、做好時間管理日報習慣:做當天/時間段總結、查當天遺漏、做下個時間段或周期的計劃;建議關註一個

執行力決定命第5集《負能量者,請你滾出辦公室》

執行力、職場、負能量、「音頻原文」http://dwz.cn/6sAPsW大家好,我是林琳笨,今天一起分享的主題有臟話,不過我認為這樣更符合我接下來要講的內容。今天的主題叫《負能量者,請你滾出辦公室》。 為什麽把負能量話題放在《執行力決定命》專輯裏,因為負能量的人,幾乎不太可能執行力很強,他們把大量的時間用在

執行力決定命第8集《時間管理,讓工作和生活井井有條》

職場、手段、執行力、加薪、「音頻原文」http://dwz.cn/6sB211大家好,我是林琳笨,今天跟大家一起分享《時間管理,讓工作和生活井井有條》,這個話題不但和工作有關系,也和生活關系也很大。成功人士是事業有成,家庭照顧的很好,工作之余能陪家人過快樂的家庭生活,這不可能只是運氣,也未必是他非常的努力,大

執行力決定命第4集《有價值的額外貢獻,要建立在做好本職前提下》

執行力、職場、貢獻、工作「音頻原文」http://dwz.cn/6sAOCC大家好,我是林琳笨,今天一起分享《有價值的額外貢獻,要建立在做好本職前提下》先引用一個華為內部的故事:華為有個新員工,入職沒幾天,做了幾十頁的發展戰略書,打算交給任正非任總,他想就算做的不好,任總也能鼓勵我一下,沒想到任總直接把方案扔

執行力決定命第2集《老板開始喜歡你,帶著責任心開啟執行力》

執行力、職場、老板、晉升「音頻原文」http://dwz.cn/6sANwk大家好,我是林琳笨,今天和大家一起分享責任心的重要性,為什麽老板喜歡有責任心的人?甚至相親也一定要求對方是一個有責任心的人。所以本期話題我取名《老板開始喜歡你,帶著責任心開啟執行力》責任心的理論定義是:個人對自己和他人、對家庭和集體、