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

Android動(dòng)態(tài)申請權(quán)限(運(yùn)行時(shí)申請權(quán)限)

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

目錄

1.需要?jiǎng)討B(tài)申請權(quán)限的原因

2.Android權(quán)限動(dòng)態(tài)申請


1.需要?jiǎng)討B(tài)申請權(quán)限的原因

? 首先,Android權(quán)限分為大致兩類,一類是普通權(quán)限,一類是危險(xiǎn)權(quán)限,準(zhǔn)確地講其實(shí)還有一些特殊的權(quán)限,不過這些權(quán)限使用得相對較少,我們大致跳過.對于普通權(quán)限,系統(tǒng)會(huì)自動(dòng)幫我們進(jìn)行授權(quán),由于Android對用戶的保護(hù),我們通常在進(jìn)行涉及到危險(xiǎn)權(quán)限的時(shí)候,需要進(jìn)行動(dòng)態(tài)聲明,不然無法通過,會(huì)對程序終止,且發(fā)出異常

例子如下:

我已經(jīng)在清單文件中進(jìn)行權(quán)限申請了,但是仍然會(huì)出現(xiàn)如下的異常,這是因?yàn)?gt;=Android6.0認(rèn)為打電話是一個(gè)危險(xiǎn)的權(quán)限需要我們進(jìn)行動(dòng)態(tài)聲明

Android動(dòng)態(tài)申請權(quán)限(運(yùn)行時(shí)申請權(quán)限),android,android studio,kotlin,開發(fā)語言

Android動(dòng)態(tài)申請權(quán)限(運(yùn)行時(shí)申請權(quán)限),android,android studio,kotlin,開發(fā)語言

2.Android權(quán)限動(dòng)態(tài)申請

package com.quick.testmyphone

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

class MainActivity : AppCompatActivity() {
    private lateinit var mBtn: Button
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        mBtn = findViewById(R.id.call)
        mBtn.setOnClickListener {
            /**
             * 判斷用戶是否已經(jīng)給過了對應(yīng)的權(quán)限:
             *   利用ContextCompat.checkSelfPermission方法  (參數(shù)一:上下文,參數(shù)二:對應(yīng)的權(quán)限名稱) 的返回值與
             * PackageManager.PERMISSION_GRANTED 做比較,相等代表已經(jīng)聲明權(quán)限
             */
            if (ContextCompat.checkSelfPermission(MainActivity@this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED ) {
                /**
                 * 如果不相等,那么調(diào)用ActivityCompat.requestPermissions 方法進(jìn)行權(quán)限申明 參數(shù)一:上下文, 參數(shù)二: string數(shù)組用于填寫權(quán)限名, 參數(shù)三: 請求碼,唯一值即可
                 */
                ActivityCompat.requestPermissions(
                    MainActivity@this,
                    arrayOf(Manifest.permission.CALL_PHONE),
                    1
                )
            } else {
                // 如果已經(jīng)聲明了權(quán)限那么直接就進(jìn)行打電話操作
                callPhone()
            }

        }
    }

    override fun onRequestPermissionsResult(
        requestCode: Int,
        permissions: Array<out String>,
        grantResults: IntArray
    ) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        when(requestCode) {
            1 -> {
                /**
                 * 由于授權(quán)的結(jié)果會(huì)封裝在grantResults 數(shù)組中,我們可以進(jìn)行非空判斷后 取出 與 PackageManager.PERMISSION_GRANTED作對比
                 */
                if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    callPhone()
                } else {
                    /**
                     * 當(dāng)用戶拒絕的話,顯示一個(gè)吐司的效果,提醒用戶
                     */
                    Toast.makeText(
                        MainActivity@this,
                        "You denied the perssion",
                        Toast.LENGTH_SHORT
                    ).show()
                }
            }
        }
    }

    fun callPhone() {
        /**
         * 進(jìn)行打電話操作
         */
        val mIntent = Intent(Intent.ACTION_CALL).apply {
            data = Uri.parse("tel:10086")
        }
        startActivity(mIntent)
    }
}

上述代碼運(yùn)行后的效果:

Android動(dòng)態(tài)申請權(quán)限(運(yùn)行時(shí)申請權(quán)限),android,android studio,kotlin,開發(fā)語言文章來源地址http://www.zghlxwxcb.cn/news/detail-828634.html

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

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

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

相關(guān)文章

  • android 12 SD動(dòng)態(tài)申請讀寫權(quán)限

    android 12 SD動(dòng)態(tài)申請讀寫權(quán)限

    android 12不僅需要在AndroidManifest.xml申請讀寫權(quán)限也需要在代碼中動(dòng)態(tài)的申請 關(guān)于如何動(dòng)態(tài)申請讀寫權(quán)限僅需要兩步 在AndroidManifest.xml文件中申請讀寫權(quán)限 在代碼的啟動(dòng)MainActivity中動(dòng)態(tài)申請方法 下面是關(guān)于動(dòng)態(tài)權(quán)限申請的Manifest.class類大家有興趣可以去了解下

    2024年02月11日
    瀏覽(26)
  • Android 在程序運(yùn)行時(shí)申請權(quán)限——以自動(dòng)撥打電話為例

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

    Android 6.0及以上系統(tǒng)在使用危險(xiǎn)權(quán)限時(shí)必須進(jìn)行運(yùn)行時(shí)權(quán)限處理。 main_activity.xml Manifest.xml MainActivity 第一步要先判斷用戶是不是已經(jīng)給過我們授權(quán)了,借助的是ContextCompat.checkSelfPermission()方法。checkSelfPermission()方法接收兩個(gè)參數(shù): 第一個(gè)參數(shù)是Context; 第二個(gè)參數(shù)是具體的權(quán)限

    2024年02月15日
    瀏覽(29)
  • Android初學(xué)之a(chǎn)ndroid studio運(yùn)行java/kotlin程序

    Android初學(xué)之a(chǎn)ndroid studio運(yùn)行java/kotlin程序

    第一步驟: File — New — New Module ,然后彈出一個(gè)框,(左邊)選擇 Java or Kotlin Library ,(右邊)編輯自己的圖書館名、包名、類名,選擇 Java 一個(gè)語言,然后 Finish 如下圖: 然后,就可以看見我新建的 java Library 了,如下圖: 第二步驟:馬上寫個(gè)測試程序 看看能不能運(yùn)行

    2024年02月11日
    瀏覽(19)
  • Android 開發(fā)中的權(quán)限申請

    ??????? 我們都知道,從 Android 6.0 開始,部分危險(xiǎn)權(quán)限在 xml 注冊的同時(shí),還需要?jiǎng)討B(tài)申請。 1、需要?jiǎng)討B(tài)申請的權(quán)限 ????????需要?jiǎng)討B(tài)申請的權(quán)限主要分為這 9 類,當(dāng)然每類中可能不止一個(gè)權(quán)限,但只要?jiǎng)討B(tài)申請一個(gè)就默認(rèn)獲取整個(gè)類別的權(quán)限。 2、申請單個(gè)權(quán)限 ??

    2024年02月09日
    瀏覽(27)
  • 藍(lán)牙開發(fā)之-Android12及以下權(quán)限申請 及藍(lán)牙詳細(xì)流程圖

    藍(lán)牙開發(fā)之-Android12及以下權(quán)限申請 及藍(lán)牙詳細(xì)流程圖

    一、藍(lán)牙開發(fā)之-權(quán)限申請, 直接上代碼 第一步、在 AndroidManifest.xml 中 聲明下需要的權(quán)限 第三步、權(quán)限拿到了,就掃描、連接、進(jìn)行通信 吧 附上流程圖

    2024年04月13日
    瀏覽(25)
  • Android申請權(quán)限(相機(jī)權(quán)限和讀寫權(quán)限)

    Android申請權(quán)限(相機(jī)權(quán)限和讀寫權(quán)限)

    開發(fā)一個(gè)相機(jī)應(yīng)用,需要申請三個(gè)權(quán)限:相機(jī)、讀文件、寫文件。 初步授權(quán)成功

    2024年02月11日
    瀏覽(27)
  • android11 申請所有文件訪問權(quán)限

    android11 申請所有文件訪問權(quán)限

    Android 11 引入了強(qiáng)制執(zhí)行分區(qū)存儲(chǔ)的限制,導(dǎo)致應(yīng)用默認(rèn)不能訪問外部文件。 針對以前涉及較多文件的操作,可采用申請所有文件訪問權(quán)限的方式來解決這一問題,實(shí)現(xiàn)方式如下。 (雖然這樣做安全性低,官方并不推薦這樣,但確實(shí)最快適配原有應(yīng)用程序的方式) 1. Android

    2024年02月04日
    瀏覽(28)
  • Android11及以上 文件讀寫權(quán)限申請

    Android11及以上 文件讀寫權(quán)限申請

    Android11 讀寫權(quán)限申請 Android11系統(tǒng)對應(yīng)用寫入權(quán)限做了嚴(yán)格的限制。本文介紹如何獲取文件讀寫權(quán)限。項(xiàng)目中 build.gradle 的 targetSdkVersion = 29 ,會(huì)出現(xiàn)讀寫問題。 當(dāng) targetSdkVersion = 29,通過設(shè)置requestLegacyExternalStorage=“true”,還能解決。 當(dāng) targetSdkVersion = 30后,需要申請所有文件

    2023年04月10日
    瀏覽(32)
  • Android 獲取SIM卡號碼權(quán)限申請

    在AndroidManifest.xml中添加如下權(quán)限 uses-permission android:name=\\\"android.permission.READ_PHONE_STATE\\\"/ 如果你只在清單文件中添加權(quán)限卻沒有在代碼中獲取權(quán)限,代碼還是會(huì)報(bào)錯(cuò)的。 報(bào)錯(cuò)原因: android 6.0以上增加了動(dòng)態(tài)獲取權(quán)限api,需要?jiǎng)討B(tài)獲取手機(jī)的權(quán)限。彈出對話框詢問用戶,請求用戶

    2024年02月08日
    瀏覽(21)
  • android 11后文件讀寫訪問權(quán)限申請

    android 11后對文件讀寫訪問權(quán)限管理 與 android 10又有了新的要求,導(dǎo)致在讀寫或者訪問時(shí)出現(xiàn)error:java.io.FileNotFoundException: /storage/emulated/0/file_path open failed: EACCES (Permission denied),以下為android 11文件管理權(quán)限申請辦法 回憶android 10 文件訪問權(quán)限申請 step 1: AndroidManifest中添加權(quán)限申

    2024年02月05日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包