AutoJs6 icon indicating copy to clipboard operation
AutoJs6 copied to clipboard

[bug]无法申请联系人权限,其他人的版本就可以

Open ch-boogeyman opened this issue 10 months ago • 0 comments

无法获取联系人权限,也不会主动申请权限,试了2台手机+1个mumu模拟器都一样情况,请问怎么解决?

let Phone = android.provider.ContactsContract.CommonDataKinds.Phone;
let ContentValues = android.content.ContentValues;
let ContentUris = android.content.ContentUris;
let ContactsContract = android.provider.ContactsContract;

// alert("警告", "将会请求联系人权限。为了保证自己的通讯录不被其他脚本泄漏或破坏,请运行本脚本后手动禁止读写联系人权限。")
// 请求联系人权限
runtime.requestPermissions(["read_contacts", "write_contacts"]);

// 首次运行会出错,因为读写联系人权限还没授予,很正常
log(getAllContacts());

// 获取所有联系人
function getAllContacts() {
    let contacts = [];
    let cursor = context.contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
    while (cursor.moveToNext()) {
        let contact = {};
        contact.name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
        let contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
        contact.contactId = contactId;
        //contact.rawContactId = cursor.getLong(cursor.getColumnIndex(ContactsContract.Data.RAW_CONTACT_ID));
        let phones = context.contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
            ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null);
        if (phones.moveToFirst()) {
            contact.number = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
        }
        phones.close()
        contacts.push(contact);
    }
    cursor.close()
    return contacts;
}

Image

ch-boogeyman avatar Mar 19 '25 10:03 ch-boogeyman