国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android 在程序運(yùn)行時(shí)申請(qǐng)權(quán)限——以自動(dòng)撥打電話為例

這篇具有很好參考價(jià)值的文章主要介紹了Android 在程序運(yùn)行時(shí)申請(qǐng)權(quán)限——以自動(dòng)撥打電話為例。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Android 6.0及以上系統(tǒng)在使用危險(xiǎn)權(quán)限時(shí)必須進(jìn)行運(yùn)行時(shí)權(quán)限處理。
main_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/makeCall"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Make Call" />
</LinearLayout>

Manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

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

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        ...
    </application>

</manifest>

MainActivity

import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.Toast
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val makeCall: Button = findViewById(R.id.makeCall)
        makeCall.setOnClickListener {
            // 先判斷用戶是不是已經(jīng)授權(quán)過(guò)了
            if(ContextCompat.checkSelfPermission(this, android.Manifest.permission.CALL_PHONE) !=
                // 未授權(quán)則向用戶申請(qǐng)權(quán)限
                PackageManager.PERMISSION_GRANTED){
                ActivityCompat.requestPermissions(this, arrayOf(android.Manifest.permission.CALL_PHONE), 1)
            }else{
                // 已經(jīng)授權(quán)則直接撥打電話
                call()
            }
        }
    }

    override fun onRequestPermissionsResult(
        requestCode: Int,
        permissions: Array<out String>,
        grantResults: IntArray
    ) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        when(requestCode){
            1 -> {
                if(grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED){
                    call()
                }else{
                    Toast.makeText(this, "You denied the permission", Toast.LENGTH_SHORT).show()
                }
            }
        }
    }

    private fun call(){
        try {
            val intent = Intent(Intent.ACTION_CALL)
            intent.data = Uri.parse("tel:10086")
            startActivity(intent)
        }catch (e: SecurityException){
            e.printStackTrace()
        }
    }
}

第一步要先判斷用戶是不是已經(jīng)給過(guò)我們授權(quán)了,借助的是ContextCompat.checkSelfPermission()方法。checkSelfPermission()方法接收兩個(gè)參數(shù):

  • 第一個(gè)參數(shù)是Context;
  • 第二個(gè)參數(shù)是具體的權(quán)限名,比如打電話的權(quán)限名就是Manifest.permission.CALL_PHONE。

然后我們使用方法的返回值和PackageManager.PERMISSION_GRANTED做比較,相等就說(shuō)明用戶已經(jīng)授權(quán),不等就表示用戶沒(méi)有授權(quán)。

如果已經(jīng)授權(quán)的話就簡(jiǎn)單了,直接執(zhí)行撥打電話的邏輯操作就可以了。如果沒(méi)有授權(quán)的話,則需要調(diào)用ActivityCompat.requestPermissions()方法向用戶申請(qǐng)授權(quán)。requestPermissions()方法接收3個(gè)參數(shù):

  • 第一個(gè)參數(shù)要求是Activity的實(shí)例;
  • 第二個(gè)參數(shù)是一個(gè)String數(shù)組,我們把要申請(qǐng)的權(quán)限名放在數(shù)組中即可;
  • 第三個(gè)參數(shù)是請(qǐng)求碼,只要是唯一值就可以了,這里傳入了1。

調(diào)用完requestPermissions()方法之后,系統(tǒng)會(huì)彈出一個(gè)權(quán)限申請(qǐng)的對(duì)話框,用戶可以選擇同意或拒絕我們的權(quán)限申請(qǐng)。不論是哪種結(jié)果,最終都會(huì)回調(diào)到onRequestPermissionsResult()方法中,而授權(quán)的結(jié)果則會(huì)封裝在grantResults參數(shù)當(dāng)中。這里我們只需要判斷一下最后的授權(quán)結(jié)果:如果用戶同意的話,就調(diào)用call()方法撥打電話;如果用戶拒絕的話,我們只能放棄操作,并且彈出一條失敗提示。

運(yùn)行效果圖:
Android 在程序運(yùn)行時(shí)申請(qǐng)權(quán)限——以自動(dòng)撥打電話為例,Android,android文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-607621.html

到了這里,關(guān)于Android 在程序運(yùn)行時(shí)申請(qǐng)權(quán)限——以自動(dòng)撥打電話為例的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Android實(shí)現(xiàn)撥打電話功能

    Android實(shí)現(xiàn)撥打電話功能

    直接撥號(hào) demo下載

    2024年02月09日
    瀏覽(15)
  • android 實(shí)現(xiàn)撥打電話號(hào)碼。

    android 實(shí)現(xiàn)撥打電話號(hào)碼。

    在撥打電話號(hào)碼之前,預(yù)設(shè)一個(gè)B號(hào)碼,正常使用電話時(shí),本來(lái)輸入的是A號(hào)碼。實(shí)際撥打的是B號(hào)碼。但是接聽(tīng)頁(yè)面顯示的是A號(hào)碼。是不是比較繞,在android9之前,各廠商的實(shí)現(xiàn)不了,android7以下可以實(shí)現(xiàn)。但是現(xiàn)在很多機(jī)型最低都是11以上了。 興趣使然,研究了幾天,終于出

    2024年02月14日
    瀏覽(25)
  • Android 12.0 禁用和啟用撥打電話功能實(shí)現(xiàn)

    ?在12.0的產(chǎn)品定制化開(kāi)發(fā)中,在一些wifi產(chǎn)品的產(chǎn)品開(kāi)發(fā)中,對(duì)于系統(tǒng)4g部分的功能需要裁剪 比如撥打電話 接聽(tīng)電話 短信功能等這部分 需要禁用系統(tǒng)對(duì)應(yīng)的功能,接下來(lái)就來(lái)初步分析下系統(tǒng)中撥打電話部分功能,然后實(shí)現(xiàn)禁用撥打電話功能 在系統(tǒng)中TelecomManager 主要是提供有

    2024年02月09日
    瀏覽(20)
  • 微信小程序調(diào)用直接撥打電話功能

    ?我們?cè)谧鲂〕绦虻臅r(shí)候,通常回顯的電話號(hào)碼,是要能調(diào)用撥打電話的接口,直接撥打電話的,那么如何調(diào)用直接撥打電話的接口呢,下面我就簡(jiǎn)單的記錄一下。 ?1.index.wxml文件 2.index.js文件

    2024年02月12日
    瀏覽(30)
  • UNI-APP_uni.makePhoneCall實(shí)現(xiàn)撥打電話功能(android)

    UNI-APP_uni.makePhoneCall實(shí)現(xiàn)撥打電話功能(android)

    https://uniapp.dcloud.net.cn/api/system/phone.html Android需要在 manifest.json 增加權(quán)限 包括微信和真機(jī)撥打電話兩種方式 注:plus.device.dial的第2個(gè)參數(shù)是是否跳到手機(jī)撥號(hào)頁(yè)面,true是跳過(guò)去讓用戶自己點(diǎn)呼叫按鈕,false是不跳過(guò)去直接打這個(gè)號(hào)碼 android真機(jī)撥打電話需要增加權(quán)限,權(quán)限如下

    2024年02月06日
    瀏覽(24)
  • 微信小程序調(diào)用撥打電話API,實(shí)現(xiàn)選擇撥打固話或手機(jī)號(hào)。

    微信小程序調(diào)用撥打電話API,實(shí)現(xiàn)選擇撥打固話或手機(jī)號(hào)。

    HTML 部分: JavaScipt 部分: (vue中 ,??這段將寫(xiě)在 methods 里邊) 效果 ···? 有 固話 且 和 手機(jī)號(hào) 不相同圖片演示: ?效果 ···? 兩個(gè) 號(hào)碼 相同 圖片演示: ? 可根據(jù)需求自加判斷條件,也可以選擇此段代碼直接服用。(收藏 關(guān)注喲 ?)

    2024年02月13日
    瀏覽(26)
  • 微信小程序撥打電話:從此告別繁瑣操作

    微信小程序撥打電話:從此告別繁瑣操作

    關(guān)于“微信小程序撥打電話”,這是一個(gè)非常實(shí)用的功能,很多人在使用微信小程序時(shí)都會(huì)遇到需要撥打電話的情況。那么,如何在微信小程序中實(shí)現(xiàn)撥打電話這個(gè)功能呢?本文將為大家介紹微信小程序撥打電話的實(shí)現(xiàn)方法,幫助大家更加便捷地使用微信小程序。 首先創(chuàng)建一

    2024年02月16日
    瀏覽(25)
  • 【小程序】實(shí)現(xiàn)直接撥打電話功能 wx.makePhoneCall

    【小程序】實(shí)現(xiàn)直接撥打電話功能 wx.makePhoneCall

    在小程序中想要撥打客服熱線或者商家電話等,如果還要復(fù)制在去撥號(hào)鍵盤(pán)那邊撥打的話就顯得很不友好,能不能做到點(diǎn)擊撥打按鈕就直接幫客戶調(diào)起撥號(hào)鍵盤(pán)呢?其實(shí),微信小程序的官方文檔中是給了撥打電話的接口的,我們只要拿到項(xiàng)目中直接使用就行了。 在模擬器上已

    2024年02月12日
    瀏覽(137)
  • 【uniapp】微信小程序中實(shí)現(xiàn)點(diǎn)擊撥打電話的功能

    【uniapp】微信小程序中實(shí)現(xiàn)點(diǎn)擊撥打電話的功能

    ?手機(jī)端運(yùn)行會(huì)直接調(diào)起電話按鈕,代碼如下: 復(fù)制即可,即用即粘。

    2024年02月11日
    瀏覽(105)
  • uniapp H5頁(yè)面、小程序頁(yè)面獲取手機(jī)號(hào)撥打電話

    uniapp H5頁(yè)面、小程序頁(yè)面獲取手機(jī)號(hào)撥打電話

    效果圖: 1、H5頁(yè)面----手機(jī)號(hào)寫(xiě)死: 2、H5頁(yè)面----動(dòng)態(tài)獲取手機(jī)號(hào)撥打: APP: 小程序: methods:

    2024年02月07日
    瀏覽(30)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包