程序运行时申请权限

Permission Denial: opening provider xxx that is not exported from UID 1000解决方案 更改framework源码解决Permission Denial: opening provider that is not exported from UID 1000 错误 阅读详情

大家现在可能发现之前我们写好的项目会报一个这样的错  :  Permission Denial  这个的意思就是提醒我们由于权限被禁止所导致的!

下面我会给出详细的代码如果有不同意见或建议的请指出,谢谢!

先看一下效果图:

 

点击取消 调用onRequestPermissionResult方法

点击允许开始拨打电话



下面给出运行时申请权限代码 :

package com.example.liangshaoteng.fileoutputstream;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button commit = (Button) findViewById(R.id.commit);
        commit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //判断当前应用的权限如果和PackageManager管理者的权限不相等的话
                if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
                    //就从新请求权限
                    ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CALL_PHONE}, 1);
                } else {
                    //如果管理者有认可的权限就直接拨打电话
                    call();
                }
            }
        });
    }

    public void call() {
        try {
            Intent intent = new Intent(Intent.ACTION_CALL);
            intent.setData(Uri.parse("tel:10086"));
            startActivity(intent);
        } catch (SecurityException e) {
            e.printStackTrace();
        }
    }

    /**
     *
     * @param requestCode  用于判断权限的第几个坐标
     * @param permissions
     * @param grantResults 授权的成功结果数组
     */
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case 1:
                if (grantResults.length > 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    call();
                } else {
                    Toast.makeText(getApplicationContext(), "您的权限被禁止!", Toast.LENGTH_LONG).show();
                }
                break;
        }
    }
}



下面这张图中如果大家有用到的话需要及时处理不然在Android6.0以上就会报错


Android 6.0 SecurityException: Permission Denial 在写一个群发短信APP时涉及到获取系统的联系人信息,添加联系人的事件为下:mBtAdd.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(In 阅读详情

相关推荐

Android开发避坑指南:遇到Permission Denial广播错误怎么办?

本文针对Android开发中常见的Permission Denial广播错误,深入剖析了其成因——系统对受保护广播的安全限制,并提供了从排查诊断到解决方案的完整指南。文章详细介绍了如何识别受保护广播,并给出了针对普通应用和系统应用的不同替代方案与最佳实践,帮助开发者有效规避此类权限问题。

gan8painter的博客 391

Android中startActivity中的permission检测与UID机制

我们经常在一个activity中去start另一个activity,或者与另一个acitivity的结果进行交互(startActivityForResult)。但有没有想过可能会出现的permission问题呢?如果你遇到了permission denial的Exception,那么你需要读读这篇文章啦。 我们在同一个application内部,可以随意的startActivity fro...

1106

Android第一行代码——快速入门 Kotlin 编程(8.2.2 在程序运行时申请权限)

但是,如果我们在Android 6.0 或者更高版本系统的手机上运行,点击 “Make Call” 按 钮就没有任何效果了,这时观察 Logcat 中的打印日志,你会看到如 图8.4 所示的错误信息。在开始动手之前,你需要考虑一下到底要申请什么权限,其实 表8.1 中列出的所有权限 都是可以申请的,这里简单起见,我们就使用。由于用户还没有授权过我们拨打电话权限,因此第一次运行会弹出这样一个权限申请的对话 框,用户可以选择同意或者拒绝,比如说这里点击了“Deny” ,结果如 图8.6 所示。

fhbxts的博客 1036

java.lang.SecurityException: Permission Denial:错误解决办法

在SDK23也就是Android6.0.1里编写调用系统通讯录读写权限的程序,在AndroidManifest.xml中,已经配置了<uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-permission android:name="android.permission.WRITE_CONTACTS"/>但

OR的博客 2万+

从‘最长白列’到‘八邻域’:智能车图像巡线算法怎么选?我的踩坑经验分享

本文深入探讨了全国大学生智能汽车竞赛中图像巡线算法的选型与优化,对比了最长白列法、八邻域算法等五种主流方法的性能与适用场景。通过实战数据和代码示例,分析了各算法在直道、弯道及特殊赛道元素中的表现,并提供了内存优化、参数调整等实用技巧,帮助参赛团队提升智能车的巡线精度与效率。

weixin_30374009的博客 632

UReport2 报表设计器 在线表格

UReport2官网 一、UReport2报表设计器 UReport2是一个开源的可视化报表设计器,功能强大,操作简单,可以实现复杂的报表统计,有各种各样的导出和打印功能,支持导入Excel表格! 1、报表设计器 2、设计一个简单的用户列表展示 二、可编辑表格 扩展了layui的表格,支持多元化数据编辑(单选,多些、日期、下拉联动),开发简单、高效、便捷。有了它就可以轻松开发类似进销存系统的表格录入功能了,用户拿来即用! 三、主从表录......

ejinxian的专栏 2万+

程序运行时权限申请及targetSdkVersion的区别

为什么要在说权限申请的时候,说targetSdkVersion呢!其实是有原因的,因为目标版本的值的修改,对权限的申请检查是有很大的影响! 例如当targetSdkVersion版本小于23(6.0)的时候,其在编译的时候,不会对权限申请去进行判断,只有在运行过程中才会知道。 当targetSdkVersion大于等于23的时候,就会在编译时候检查代码是否有申请权限的判断。也就会有如下提示: ...

willba的博客 3824

【OpenClaw从入门到精通】第17篇:OpenClaw巨头布局实战:阿里CoPaw/腾讯云/百度/火山引擎深度拆解(2026实操版)

2026年OpenClaw以22.8万星标登顶GitHub,引发阿里、腾讯、百度、字节等互联网巨头入局角逐。本文基于公开技术文档与实测经验,深度解析四大巨头的OpenClaw布局战略:阿里云CoPaw的全栈托管、腾讯云的流量入口绑定、百度智能云的搜索生态内嵌、火山引擎的极致智力供给。从核心原理、算法构建、实操流程三个维度,提供可直接落地的接入方案,包含完整代码示例与执行结果验证。通过流程图可视化核心架构,搭配避坑指南与选型矩阵,帮助新手快速上手、进阶读者实现多厂商协同部署。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1680

Android在程序运行时申请权限

Android5.0以后,Android对权限的管理加强了,很多权限只能在运行的时候申请。 1.在AndroidManifest.xml中注册 &lt;uses-permission android:name="android.permission.CALL_PHONE"/&gt; 2.在Activity中申请 2.1导入类 import android.Manifest; ...

厚积薄发,持之以恒 967

PCL 三维重建 泊松曲面重建算法

本文介绍了基于泊松曲面重建算法的三维重建过程。泊松重建是一种利用点云数据生成三维表面的算法,它基于点云的法线估计和泊松方程的求解,能够生成光滑且连续的曲面模型。该方法适用于复杂形状和细节的表面重建。

纵马踏花向自由 1090

【Go语言实战】(3) Gin + Gorm 简单备忘录 | 含接口文档

Go语言实战:TodoList 备忘录

面向生活编程 6139

程序运行时申请管理员权限

制作好的程序没有管理员权限,啥也干不了? 以下是一个可以达到在程序开始运行之前申请管理员权限 UAC.zip 感谢支持!

Lemopig的博客 1261

YOLOv8 | 代码逐行解析(二) | 从yaml文件到模型定义(代码逐行注释,小白必看)

本文给大家带来的是YOLOv8项目的解读,之前给大家分析了YOLOv8的项目文件分析,这一篇文章给大家带来的是模型训练从我们的yaml文件定义到模型的定义部分的讲解,我们一般只知道如何去训练模型,和配置yaml文件,但是对于yaml文件是如何输入到模型里,模型如何将yaml文件解析出来的确是不知道的,本文的内容接上一篇的代码逐行解析(一) 项目目录分析,本文对于小白来说非常友好,非常推荐大家进行阅读,深度的了解模型的工作原理已经流程,下面我们从yaml文件来讲解。

Snu77的博客 1万+

内容提供器——在程序运行时申请管理权限

Android现在将所有的权限分为了两类,一类是普通权限,一类是危险权限。 普通权限:指那些不会直接威胁到用户的安全和隐私的权限,对于这一部分权限申请,系统会自动帮我们授权。 危险权限:表示那些可能会触及用户隐私,或者对设备安全性造成影响的权限,如获取设备联系人信息,定位设置的地理位 置等,对于这部分权值,必须由用户手动点击授权才可以使用相应功能。 在本例...

weixin_42937036的博客 272

第58篇:AI技术实战:基于深度学习的智能音频内容审核系统

深度学习技术为智能音频内容审核系统提供了强大的支持,通过CNN、RNN和Transformer等模型,能够实现高效的音频内容检测和过滤。使用TensorFlow和Keras可以快速构建和训练音频审核模型,而预训练模型则可以进一步提升性能。数据预处理、特征提取和性能优化是提升智能音频审核系统性能的关键。希望本文的代码示例和注意事项能帮助你更好地理解和应用这些技术。接下来,我们将继续探索更多AI技术实战案例。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 705

YOLOv12改进前必看 - YAML模型配置文件详细解读(再也不用担心通道数不匹配) 附网络结构图

YOLOv12的模型配置文件在中,里面包含yolov12的以及的不同大小的模型,本文将详细介绍一下YOLOv12模型文件中各参数的含义。

Limiiiing的博客 3275

66.在程序运行时申请权限

我们将创建一个简单的 Android 应用程序,该应用程序在运行时请求读取联系人(READ_CONTACTS)权限。如果权限被授予,它将显示一条消息,否则,它将显示另一条消息。

2303_79132118的博客 267

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Android 在程序运行时申请权限——以自动拨打电话为例

调用完requestPermissions()方法之后,系统会弹出一个权限申请的对话框,用户可以选择同意或拒绝我们的权限申请。这里我们只需要判断一下最后的授权结果:如果用户同意的话,就调用call()方法拨打电话;如果没有授权的话,则需要调用ActivityCompat.requestPermissions()方法向用户申请授权。然后我们使用方法的返回值和PackageManager.PERMISSION_GRANTED做比较,相等就说明用户已经授权,不等就表示用户没有授权。

Annie_0321的博客 1188

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Android程序运行时申请权限(例:拨打电话)

public class MainActivity extends AppCompatActivity { private Button makeCall; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); m.

qq_61480980的博客 3417

android 代码执行过程,Android 在程序运行时申请权限的实例讲解

这里我们以拨打电话申请权限来写个小例子,也就是CALL_PHONE,因为拨打电话会涉及用户手机的资费问题,因而被列为了危险权限,在Android6.0系统出现之前,拨打电话功能的实现其实非常简单,修改activity_mainxml中的代码,如下:xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schem...

weixin_34977480的博客 316

Android:在程序运行时申请权限(第一行代码android)

这里以设计一个按钮以拨打电话为例子 拨打电话必须在Android.Manifest.xml中声明权限 拨打电话的函数: public void call(){     try{         Intent intent = new Intent(Intent.Action_CALL);         intent.setData(Uri.parse("tel:10086"));

qq_20079785的博客 848

安卓四大组件-内容提供器-1_程序运行时申请权限

注意:在学习内容提供者之前请看我发的博客 数据存储的! 简介:内容提供器主要用在不同应用程序之间实现数据共享功能,跟数据存储不同,数据存储所保存的数据都只能在当前的应用当中访问。但是内容提供者它提供了一套完整的机制允许一个程序访问另一个程序中的数据,同时还能保证被访问数据的安全性; 首先新建一个RuntimePermissionTest项目。修改acticvity_main.xm

ai_XZP_master 482

Android运行时权限详解

Android运行时权限详解

Android应用开发工程师 3222

Android 权限机制与及运行时权限申请示例

权限机制介绍,运行时权限申请示例

gdut_liujiangyi的专栏 1949

运行时权限解析以及申请的实现(可完美解决java.lang.SecurityException:Permission Denial 问题)

1.运行时权限 Android现在将所有的权限归成了两类: Android中有一共上百种权限,危险权限主要为以下9组24个权限,剩余的都是普通权限: 使用这张表格: 访问https://developer.android.google.cn/reference/android/Manifest.permission可以查看Android系统中完整的权限列表。 1.1 ...

IceSea7 2万+
上一篇: Utils--------工具类
下一篇: ContentProvider--------详解内容提供器
有志青年L
博客等级 码龄10年 30粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值