Tuhaf bir izin sorunuyla uğraşıyorum.İzin reddi - izinler çalışmıyor
Adresleri, SMS ve arama kayıtlarına okumaya çalışıyorum ve bunun için, benim Manifestosunun bu izinleri kullanıyorum:
<uses-permission android:name="android.permission.WRITE_CALL_LOG" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
Ben ilk sms okumaya başladığımda, işe yaradı. Sonra kişileri denedim ve READ_CONTACTS iznine ihtiyacım olduğunu bildiren bir hata mesajı aldım (zaten kullandım). Projeyi temizledim ve sonra işe yaradı. Ama şimdi hiçbir şey işe yaramıyor, SMS, iletişim veya arama kayıtları olsun. Projeyi temizledim, yeniden inşa ediyorum, hala hiçbir şey yok.
Benim gradle inşa:
android {
compileSdkVersion 23
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.xyz"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
ben minSdkVerion sanmıyorum ya ben çağrı kaydı iznini kaldırırsanız şimdi bile değil, amele başlayan SMS okumada dediğim gibi compileSdkVersion bir sorundur.
Bazı kod satırları:
public void backUpContacts() {
String[] dataContacts = {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone._ID};
Cursor cursor = this.mContext.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, dataContacts, null, null, null);
JSONObject jsonContacts;
JSONArray jsonArray = new JSONArray();
while (cursor != null && cursor.moveToNext()) {
jsonContacts = new JSONObject();
for (int i = 0; i < cursor.getColumnCount(); i++) {
jsonContacts.put(cursor.getColumnName(i), cursor.getString(i));
}
contacts = cursor.getColumnCount();
jsonArray.add(jsonContacts);
}
Log.d("jsonArray", jsonArray.toString());
if (cursor != null) cursor.close();
createFile(jsonArray, "contacts");
}
public void backupSms() {
JSONArray listSmsInbox;
JSONArray listSmsSent;
listSmsInbox = getPhoneSms("content://sms/inbox", "received");
listSmsSent = getPhoneSms("content://sms/sent", "sent");
Log.i("listSmsInbox", listSmsInbox.toString());
Log.i("listSmsSent", listSmsSent.toString());
}
private JSONArray getPhoneSms(String parsing, String param) {
Cursor c = this.mContext.getContentResolver().query(Uri.parse(parsing), null, null, null, null);
JSONObject jsonSms = new JSONObject();
JSONArray jsonArray = new JSONArray();
while (c != null && c.moveToNext()) {
jsonSms = new JSONObject();
for (int i = 0; i < c.getColumnCount(); i++) {
jsonSms.put(c.getColumnName(i), c.getString(i));
}
jsonArray.add(jsonSms);
if (param.equals("received")) {
receivedSms = c.getColumnCount();
} else {
sentSms = c.getColumnCount();
}
}
jsonArray.add(jsonSms);
if (c != null) c.close();
createFile(jsonArray, param);
return jsonArray;
}
Ben AsyncTask ile bu yöntemleri arıyorum: Yardımlarınız için
@Override
protected Void doInBackground(Void... params) {
if (param.equals("contacts")) {
backUpContent.backUpContacts();
} else if (param.equals("sms")) {
backUpContent.backupSms();
} else if (param.equals("callLogs")) {
backUpContent.backUpCallLogs();
}
publishProgress(0);
return null;
}
teşekkürler!
Bkz https://stackoverflow.com/questions/32635704/cant İşte
benim onRequestPermissionsResult() 'dir -get-the-perm, sonra 'targetSdkVersion'' '' '' ya bırakın veya kodunuza çalışma zamanı izinleri için destek ekleyin. – CommonsWare