程序运行时申请权限

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万+

立创开源:基于STM32F407的大疆M30T无人机PSDK机载开发板硬件设计与飞行控制实现

本文详细介绍了基于STM32F407微控制器为大疆M30T无人机设计PSDK机载开发板的完整流程。从关键的E-Port接口电路设计、电源保护,到STM32最小系统搭建,再到通过PSDK实现与无人机的通信及基础飞行控制,提供了从硬件到软件的全栈实战指南,助力开发者快速入门无人机负载开发。

weixin_35649491的博客 401

企业网络改造必看:如何用华为S5700三层交换机解决多部门隔离通信?

本文详细介绍了如何利用华为S5700三层交换机解决企业多部门网络隔离与通信需求。通过划分VLAN实现逻辑隔离,并配置三层路由实现受控互通,结合ACL进行精细访问控制,构建安全高效的企业网络。文章提供了从拓扑规划、地址分配到核心配置的完整实战指南。

weixin_29260291的博客 260

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

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

willba的博客 3824

ArcGIS小白必看:5分钟搞定WGS_1984到Krasovsky_1940_Albers投影转换(附详细步骤)

本文为ArcGIS初学者提供了从WGS_1984地理坐标系转换到Krasovsky_1940_Albers投影坐标系的详细实战指南。文章深入剖析了投影变换与基准面转换的核心区别,通过分步详解创建自定义地理变换、执行投影等关键操作,并附带了常见问题排查与批量处理脚本,旨在帮助用户高效、准确地完成坐标系统转换,为后续空间分析奠定基础。

weixin_29305337的博客 634

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

多模态论文笔记——VQ-VAE和VQ-VAE-2

本文详细介绍VQ-VAE和VQ-VAE-2的原理和训练过程,为后面的dVAE在DALLE中的使用打下坚实的基础。

haopinglianlian的博客 3299

AI学习指南RAG篇(19)-API调用与集成

通过上述API调用示例,您可以方便地将RAGFlow与其他系统集成,实现数据集管理、文档处理、会话管理等功能。希望本文的介绍能帮助您更好地理解和使用RAGFlow的API。

俞兆鹏的博客 2545

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

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

Lemopig的博客 1261

9.13华为OD机试真题 新系统 - 手机桌面整理 (Java/Py/C/C++/Js/Go)

华为OD机试真题 新系统【手机桌面整理】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【 手机桌面整理】多语言题解。

qq_45776114的博客 632

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

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

weixin_42937036的博客 272

《UDS协议从入门到精通》系列——图解0x83:访问时间参数

详细介绍UDS协议0x83服务,目标ECU的时序参数设置有哪些注意点?

车载系统攻城狮 2138

Unreal5 从入门到精通之 学习Niagara特效系统

UE5 Niagara粒子系统解析 Niagara是UE5中的高性能粒子特效系统,相比传统粒子系统具有完全可编程性和可视化节点编辑两大特点。核心单元发射器(Emitter)分为模板发射器(预设效果如喷泉、火焰)和空白发射器(高度自定义)。系统提供13种预设模板,包括吹飞粒子、五彩纸屑爆发、动态光束等常见特效。 Niagara采用三级模块化设计: 系统级:全局参数设置与更新 发射器级:控制粒子生成规则与行为 粒子级:处理单个粒子的生命周期和渲染 关键模块包括初始化粒子属性、物理模拟、颜色渐变等,支持GPU加速

TxNet 1121

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

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

2303_79132118的博客 267

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

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

Annie_0321的博客 1188

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

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

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

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、付费专栏及课程。

余额充值