load contacts and start observer after giving permissions
This commit is contained in:
parent
816f5b6d22
commit
d86f4ce3a6
|
@ -190,15 +190,6 @@ public class XmppConnectionService extends Service {
|
|||
public DatabaseBackend databaseBackend;
|
||||
private ReplacingSerialSingleThreadExecutor mContactMergerExecutor = new ReplacingSerialSingleThreadExecutor(true);
|
||||
private long mLastActivity = 0;
|
||||
private ContentObserver contactObserver = new ContentObserver(null) {
|
||||
@Override
|
||||
public void onChange(boolean selfChange) {
|
||||
super.onChange(selfChange);
|
||||
if (restoredFromDatabaseLatch.getCount() == 0) {
|
||||
loadPhoneContacts();
|
||||
}
|
||||
}
|
||||
};
|
||||
private FileBackend fileBackend = new FileBackend(this);
|
||||
private MemorizingTrustManager mMemorizingTrustManager;
|
||||
private NotificationService mNotificationService = new NotificationService(this);
|
||||
|
@ -984,8 +975,7 @@ public class XmppConnectionService extends Service {
|
|||
restoreFromDatabase();
|
||||
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M || ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) == PackageManager.PERMISSION_GRANTED) {
|
||||
//TODO get this restarted if users gives permission
|
||||
getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true, contactObserver);
|
||||
startContactObserver();
|
||||
}
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M || ContextCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
|
||||
Log.d(Config.LOGTAG, "starting file observer");
|
||||
|
@ -1024,6 +1014,18 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
}
|
||||
|
||||
public void startContactObserver() {
|
||||
getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true, new ContentObserver(null) {
|
||||
@Override
|
||||
public void onChange(boolean selfChange) {
|
||||
super.onChange(selfChange);
|
||||
if (restoredFromDatabaseLatch.getCount() == 0) {
|
||||
loadPhoneContacts();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTrimMemory(int level) {
|
||||
super.onTrimMemory(level);
|
||||
|
@ -1538,7 +1540,7 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
Log.d(Config.LOGTAG, "finished merging phone contacts");
|
||||
mShortcutService.refresh(mInitialAddressbookSyncCompleted.compareAndSet(false, true));
|
||||
updateAccountUi();
|
||||
updateRosterUi();
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
|
|
@ -677,19 +677,11 @@ public class StartConversationActivity extends XmppActivity implements XmppConne
|
|||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
builder.setTitle(R.string.sync_with_contacts);
|
||||
builder.setMessage(R.string.sync_with_contacts_long);
|
||||
builder.setPositiveButton(R.string.next, (dialog, which) -> {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, REQUEST_SYNC_CONTACTS);
|
||||
}
|
||||
});
|
||||
builder.setOnDismissListener(dialog -> {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, REQUEST_SYNC_CONTACTS);
|
||||
}
|
||||
});
|
||||
builder.setPositiveButton(R.string.next, (dialog, which) -> requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, REQUEST_SYNC_CONTACTS));
|
||||
builder.setOnDismissListener(dialog -> requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, REQUEST_SYNC_CONTACTS));
|
||||
builder.create().show();
|
||||
} else {
|
||||
requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, 0);
|
||||
requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, REQUEST_SYNC_CONTACTS);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -703,6 +695,7 @@ public class StartConversationActivity extends XmppActivity implements XmppConne
|
|||
ScanActivity.onRequestPermissionResult(this, requestCode, grantResults);
|
||||
if (requestCode == REQUEST_SYNC_CONTACTS && xmppConnectionServiceBound) {
|
||||
xmppConnectionService.loadPhoneContacts();
|
||||
xmppConnectionService.startContactObserver();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue