Androidバッテリーウィジェットを作成しようとしています。問題は、時々更新されることがありますが、しばしば更新されないことです。Androidバッテリーウィジェットのアップデートがある場合があります
携帯電話を再起動するか、画面から削除して画面に再度作成する必要があります。
私の問題は何ですか?
ここは私のコードです。これは私の唯一のクラスです。
public class BatteryWidgetProvider extends AppWidgetProvider
{
private RemoteViews views;
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds)
{
context.getApplicationContext().registerReceiver(this, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
ComponentName name = new ComponentName(context, BatteryWidgetProvider.class);
appWidgetManager.updateAppWidget(name, this.views);
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
@Override
public void onReceive(Context context, Intent intent)
{
String action = intent.getAction();
if(action.equals(intent.ACTION_BATTERY_CHANGED))
{
Integer level = intent.getIntExtra("level", -1);
this.views.setTextViewText(R.id.batter_level, level.toString() + "%");
ComponentName name = new ComponentName(context, BatteryWidgetProvider.class);
AppWidgetManager.getInstance(context).updateAppWidget(name, this.views);
}
super.onReceive(context, intent);
}
私のマニフェストファイルは、次のようになります。..
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<receiver android:name=".BatteryWidgetProvider">
<intent-filter >
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/appwidget_info"/>
</receiver>
</application>
ここでは私のinfoファイルです...
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minHeight="72dp"
android:minWidth="144dp"
android:updatePeriodMillis="0" >
</appwidget-provider>
エラー....
java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.BATTERY_CHANGED flg=0x60000000 (has extras) } in [email protected]
at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:906)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4633)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.batterywidget.BatteryWidgetProvider.onReceive(BatteryWidgetProvider.java:72)
at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:893)
私を助けることができる人はいますか? – Mich
これをデバッガで実行しようとしましたか? onReceive/onUpdateにブレークポイントを置き、定期的に呼び出されるかどうかを確認します。それ以上の情報なしで潜在的にあなたのコードに間違っていた可能性があることを言うのは難しいです。いくつかのプリントを試してlogcatを呼び出すと、何が呼び出されているのか、いつ呼び出されるのかを確認できますたぶん受信機を正しく設定していないかもしれません。あるいは、あなたのコードがキャッチされていない例外をスローしているかもしれません。 – Tim
はい、nullpointer例外が存在することがあります。私はそれを上に追加しました – Mich