Điều này hoàn toàn lạ và tôi đã tìm kiếm qua các diễn đàn.Ngoại lệ bảo mật của Android khi truy cập danh bạ
Trong lớp học chính của tôi, tôi có nút onClick sẽ khởi chạy ứng dụng danh bạ như được hiển thị bên dưới. Khi tôi nhấp vào nút, danh sách liên lạc của anh ta được hiển thị nhưng ngay sau khi tôi gõ vào một số liên lạc một ngoại lệ bảo mật được ném.
public void selectContacts(View v) {
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case PICK_CONTACT:
if (resultCode == Activity.RESULT_OK) {
Uri contactData = data.getData();
Cursor c = managedQuery(contactData, null, null, null, null);
while (c.moveToNext()) {
String id = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));
String phoneNumber = getPhoneNumber(id);
listOfContacts.add(phoneNumber);
}
} else {
System.out.println("User didn't pick a contact");
finish();
}
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
Tôi đã kiểm tra tệp kê khai và đã thử tất cả kết hợp đặt thẻ quyền sử dụng, trong ứng dụng, hoạt động, v.v. Đây là bản kê khai của tôi.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="in.company.letsmeet"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="7" />
<uses-permision android:name="android.permission.SEND_SMS" />
<uses-permision android:name="android.permission.RECEIVE_SMS" />
<uses-permision android:name="android.permission.INTERNET" />
<uses-permision android:name="android.permission.READ_CONTACTS" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".LetsmeetActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Trường hợp ngoại lệ an ninh:
05-04 11:26:39.950: E/AndroidRuntime(3861): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content://com.android.contacts/contacts/7 }} to activity {in.company.letsmeet/in.company.letsmeet.LetsmeetActivity}: java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.SemcContactsProvider2 uri content://com.android.contacts/contacts/7 from pid=3861, uid=10093 requires android.permission.READ_CONTACTS
Bất kỳ trợ giúp sẽ được đánh giá cao. Tôi đang thử điều này trên Android 2.1 Sony experia S10 mini.
Hãy thử [Ví dụ của Commonsware] này (https://github.com/commonsguy/cw-advandroid/tree/master/Contacts/Pick) trong sony experia của bạn trước tiên. Và, cho tôi biết. Cho dù nó hoạt động hay không? – Praveenkumar
Cảm ơn Akhil, ví dụ của commnsware hoạt động. Lạ thật. Tệp kê khai trong chương trình đó không có bất kỳ quyền nào cả :). Tôi không thể ngu ngốc được. –
Bạn có lỗi đánh máy trong sử dụng-permision, cần phải xin phép – yshahak