Я программирую виджет, который должен обновляться каждый раз, когда я получаю пропущенный вызов. Для этого в методе onEnabled класса AppWidgetProvider я регистрирую ContentObserver. Код следующий:
@Override
public void onEnabled(Context context){
this.mcco = new MissedCallsContentObserver(context);
context.getContentResolver().registerContentObserver(Calls.CONTENT_URI, true, this.mcco);
}
Код для класса MissedCallsContentObserver следующий:
package bembibre.coolstar.windowsmobilewidget.backend;
import bembibre.coolstar.windowsmobilewidget.backend.textproviders.CallsProvider;
import android.content.Context;
import android.database.ContentObserver;
public class MissedCallsContentObserver extends ContentObserver
{
Context context;
public MissedCallsContentObserver(Context context)
{
super(null);
this.context = context;
}
@Override
public void onChange(boolean selfChange)
{
try{
Thread.sleep(1000);
}
catch(Exception e){
}
new CallsProvider(this.context).setData();
}
}
Метод onChange вызывается автоматически каждый раз, когда на телефон поступает пропущенный вызов. Это работает на многих устройствах, на которых я тестировал. Но я также тестировал его на LG L5. Это единственное устройство, в котором это не работает. Почему? ContentObservers не совпадают на устройстве Samgung и на устройстве LG? В LG метод onChange никогда не вызывается. Я также хотел бы задать вопрос о моем отладчике eclipse. С моим телефоном Samsung он работает хорошо, но с Sony Xperia и LG, упомянутыми ранее, он отключается, когда хочет. Ничего не делая, отладчик внезапно отключается. Мой USB-провод идеален. Также порты USB моего компьютера и телефона. Почему отладчик отключается? В logcat не выдается ни исключение, ни сообщение об ошибке. Я не знаю, в чем проблема.
ContentObserver
сAppWidgetProvider
на липкоеService
. - person user3289695   schedule 11.03.2014