1

このカスタム インテントへのすべての参照を変更する際に問題が発生しました。別名、名前を変更したところ、登録されなくなりました。しかし、もっと心配なのは、ブロードキャストされたインテントを取得できないようです! (除くAPPWIDGET_UPDATE)。

<receiver android:name=".ExampleAppWidgetProvider" 
            android:label="@string/widget1name">
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
         <!-- <action android:name="com.eightbitcloud.example.widget.8BITCLOCK_WIDGET_UPDATE" />  -->
        <action android:name="android.intent.action.MEDIA_REMOVED" />
        <action android:name="android.intent.action.MEDIA_UNMOUNTED" />
        <action android:name="android.intent.action.MEDIA_MOUNTED" />
        <action android:name="android.intent.action.SCREEN_ON" />

     </intent-filter>
    <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget1_info" />
</receiver>

コード付き:

@Override
public void onReceive(Context context, Intent intent) {
      Log.d(LOG_TAG, "Received intent " + intent.getAction());

起動するのは Appwidget_update だけです。

なんで?

4

3 に答える 3

2

一部のブロードキャスト イベントは、コードでレシーバーを登録した場合にのみ発生します。これを onCreate に追加してみてください:

registerReceiver(new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
           Log.e("test","screen changed!!!");
        }
}, new IntentFilter(Intent.ACTION_SCREEN_ON));
于 2012-09-28T09:42:19.597 に答える
1

これは私のonEnabled()イベントと関係があり、指定されたインテントを何度も送信するalarmManagerを作成しました。

私が受け取っていたものを変更することによって、私は明らかに古いものを除外します。

しかし、私が見落としたのは、新しいコードを実行したときにEclipseがウィジェットを置き換えていたのですが、onEnabledが再度起動されることはありませんでした。

そのため、新しい名前のインテントとは対照的に、古いインテントはまだ実行され、フィルタリングされていました。

電話を再起動したり、ウィジェットを削除して交換したりすると、うまくいくはずです(だからOnEnabled()再び解雇されます)

于 2012-10-03T08:51:20.760 に答える
0

インテント フィルタのデフォルト カテゴリを忘れました:

<category android:name="android.intent.category.DEFAULT" />
于 2012-09-28T09:19:37.920 に答える