Das ist total komisch und ich habe durch die Foren gesucht.Android Security Ausnahme beim Zugriff auf Kontakte
In meiner Hauptklasse habe ich eine Schaltfläche onClick wird die Kontaktanwendung wie unten gezeigt starten. Wenn ich auf die Schaltfläche klicke, wird die Kontaktliste angezeigt, aber sobald ich auf einen Kontakt klicke, wird eine Sicherheitsausnahme ausgelöst.
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);
}
Ich habe das Manifest überprüft und haben alle Kombinationen versucht, von der Uses-Erlaubnis-Tag Platzierung innerhalb der Anwendung, Aktivität usw. Aber nichts funktioniert. Hier ist mein Manifest.
<?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>
Die Sicherheitsausnahme:
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
Jede Hilfe wird sehr geschätzt. Ich versuche dies auf Android 2.1 Sony Experia S10 Mini.
Probieren Sie dieses [Commonsware Beispiel] (https://github.com/commonsguy/cw-advandroid/tree/master/Contacts/Pick) zuerst in Ihrem Sony Experia aus. Und lass mich wissen. Ob es funktioniert oder nicht? – Praveenkumar
Danke Akhil, das Beispiel der Commnware funktioniert. Seltsam. Das Manifest in diesem Programm hat überhaupt keine Berechtigungen :). Komm schon, ich kann nicht so dumm sein. –
Sie haben Tippfehler in der Verwendung-Permission, brauchen die Erlaubnis-Erlaubnis – yshahak