IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android开发_6:内容提供器 -> 正文阅读

[移动开发]Android开发_6:内容提供器

此博客为学习Android开发的笔记型博客,若有不妥或补充之处希望各位大神给予指正

Android权限

Android权限机制

Android权限分为普通权限和危险权限
对于普通权限,一般系统会自动帮我们授权,但对于危险权限需要用户手动授权。
下面是Android中所有的危险权限:在这里插入图片描述其他表中没有列出的权限就全都是普通权限。
Android中系统完整的权限列表:http://developer.android.com/reference/android/Manifest.permission.html

在程序运行时申请权限

在这里我们模拟点击按钮后,呼叫10086。(由于我们使用的是虚拟机所以不会真的呼出去的,不会给他人造成不便,这点请放心)

1.在配置文件中声明权限:

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

2.给button添加事件:
首先我们检测权限是否已被授权:

button.setOnClickListener(new View.OnClickListener() {
            @Override
	public void onClick(View v) {
          if (ContextCompat.checkSelfPermission(FirstActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
          	ActivityCompat.requestPermissions(FirstActivity.this, new String[]{Manifest.permission.CALL_PHONE}, 1);
          } else {
            call();
          }
    }
});

使用ContextCompat.checkSelfPermission()方法,传入两个参数:Context 和所需要的权限。

Manifest.permission.CALL_PHONE为拨号权限的常量。
同理,PackageManager.PERMISSION_GRANTED也是常量,是已授权的常量。

这里当没有授权时,调用ActivityCompat.requestPermissions()方法申请权限,传入三个参数:Context,申请权限列表(String[ ]),请求码(唯一即可)。

3.授权和回调onRequestPermissionsResult 方法

然后系统会弹出一个申请权限的对话框,无论是否授权,都会回调onRequestPermissionsResult 方法,里面有三个参数:请求码,权限列表(String[ ]),权限的处理结果(int[ ])

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
                                            //请求码                 权限列表                          权限的处理结果
   switch (requestCode){
       case 1:
           if(grantResults[0]==PackageManager.PERMISSION_GRANTED){
              call();
           }else{
              Toast.makeText(FirstActivity.this,"You denied the permission",Toast.LENGTH_SHORT).show();
           }
           break;
        default:

   }
}

4.执行呼号操作

    void call() {
        try {
            Intent intent = new Intent(Intent.ACTION_CALL);
            intent.setData(Uri.parse("tel:10086"));
            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
                return;
            }
            startActivity(intent);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

访问其他程序中的数据

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-14 14:11:29  更:2021-08-14 14:12:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 0:09:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码