知识库

wiki.linsakura.com

用户工具

站点工具


wiki:book:notes:android:第一行代码-android-第2版-郭霖:第7章

这是本文档旧的修订版!


第7章 跨程序共享数据——探究内容提供器

简介

内容提供其(Content Provider):在不同应用程序之间,实现数据共享的功能。允许一个程序访问另一个程序的数据,还能保证被访问数据的安全性。

运行时权限

在程序运行时申请权限

首先在MainActivity中添加call():

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

然后在按钮onClick()中添加:

if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(MainActivity.this, new String[]{ Manifest.permission.CALL_PHONE }, 1);
} else {
    call();
}

ContextCompat.checkSelfPermission()判断用户是否已经授权过,Manifest.permission.CALL_PHONE是具体的权限名。PackageManager.PERMISSION_GRANTED表示已授权。
ActivityCompat.requestPermissions()向用户申请授权。第二个参数是String数组,第三个是权限码,唯一即可。
最后在MainActivity中添加:

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    switch (requestCode) {
        case 1:
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                call();
            } else {
                Toast.makeText(this, "You denied the permission", Toast.LENGTH_SHORT).show();
            }
            break;
        default:
    }
}
wiki/book/notes/android/第一行代码-android-第2版-郭霖/第7章.1649245422.txt.gz · 最后更改: 2022/04/06 19:43 由 博丽幻月