Для Вашего второго вопроса альтернативно к DeleteSelectionMode можно включить Режим CUA , который дополнительно дает Вам хороший прямоугольный режим выбора, включенный C-возвратом. Режим CUA является частью emacs с тех пор 22.1.
Я развернул ваш пример таким, какой он есть, и он работает нормально.
package com.test.contentobserver;
import android.app.Activity;
import android.database.ContentObserver;
import android.os.Bundle;
import android.provider.Contacts.People;
public class TestContentObserver extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MyContentObserver contentObserver = new MyContentObserver();
getApplicationContext().getContentResolver().registerContentObserver(
ContactsContract.Contacts.CONTENT_URI,
true,
contentObserver);
}
private class MyContentObserver extends ContentObserver {
public MyContentObserver() {
super(null);
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Log.d(this.class.getSimpleName(), "A change has happened");
}
}
}
Что-то еще должно быть не так ...
Вы вносите изменения с помощью курсора наблюдатель зарегистрирован с помощью?
Убедитесь, что с помощью функции Observer deliverySelfNotifications (). (по умолчанию возвращается false)
Вы можете переопределить эту функцию наблюдателя с помощью чего-то вроде:
@Override
public boolean deliverSelfNotifications() {
return true;
}