gpt4 book ai didi

android - 未经许可读取联系人?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:29:33 24 4
gpt4 key购买 nike

我想通过 Contacts Picker 阅读联系人,如下所示:

Intent contactPickerIntent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
startActivityForResult(contact, CONTACT_PICK_CODE);

如果我得到结果,intent.getData() 包含一个 uri 来查找联系人,但我需要权限 READ_CONTACTS阅读它。

我认为没有这个权限可能会收到一个联系人,类似于 CALL 权限:如果我想直接打电话,我需要它,但没有它我可以发送一个电话应用程序的号码,用户必须单击调用按钮。
READ_CONTACTS 是否有我不知道的类似功能?

最佳答案

您可以在没有权限的情况下检索联系信息,就像您在问题中所说的那样。

在简历中,您创建一个选择联系人的 Intent ,这会为您提供一个 URI(并且暂时地,还为您提供读取它的权限),然后您使用 URI 查询以使用 Contact Provider API 检索数据.

您可以在 Intents guide 中阅读更多相关信息.

例如(来自指南):

static final int REQUEST_SELECT_PHONE_NUMBER = 1;

public void selectContact() {
// Start an activity for the user to pick a phone number from contacts
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(CommonDataKinds.Phone.CONTENT_TYPE);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(intent, REQUEST_SELECT_PHONE_NUMBER);
}
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_SELECT_PHONE_NUMBER && resultCode == RESULT_OK) {
// Get the URI and query the content provider for the phone number
Uri contactUri = data.getData();
String[] projection = new String[]{CommonDataKinds.Phone.NUMBER};
Cursor cursor = getContentResolver().query(contactUri, projection,
null, null, null);
// If the cursor returned is valid, get the phone number
if (cursor != null && cursor.moveToFirst()) {
int numberIndex = cursor.getColumnIndex(CommonDataKinds.Phone.NUMBER);
String number = cursor.getString(numberIndex);
// Do something with the phone number
...
}
}
}

关于android - 未经许可读取联系人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17611833/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com