不在着信を受けるたびに自分自身を更新する必要があるウィジェットをプログラミングしています。そのために、AppWidgetProvider クラスの onEnabled メソッドで、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 に例外もエラー メッセージもスローされません。何が問題なのかわからない。