2

そこで、メインアクティビティを呼び出す代わりに、ブロードキャストレシーバーを呼び出すようにコードを変更しました

Intent notificationIntent = new Intent(context, com.plugin.statusNotificationForGCM.statusNotificationForGCMReceiver.class);

notificationIntent.putExtra(NOTIF_RESPOND, runThis);
notificationIntent.setAction(Intent.ACTION_VIEW);
notificationIntent = notificationIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

//contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
contentIntent = PendingIntent.getBroadcast(context, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

問題は、これを受信機に追加したが、実行されているとは思わないことです。通知をクリックしてもタグが表示されず、コンソールにログインします

public class statusNotificationForGCMReceiver extends BroadcastReceiver {
    private static final String TAG = "statusNOTIFICATIONReceiver";

    @Override
    public final void onReceive(Context context, Intent intent) {
        Log.v(TAG,"ASDFSJD FASDF ASDPFJA SDFPAUS DFPAS DFASDF");
    }
}

足りないものはありますか?マニフェストファイルに何かを追加する必要がありますか?

ありがとう

4

1 に答える 1

5

これをマニフェストに含める必要があるかもしれません:

適切な意図は、<intent-filter>

<activity android:name="BroadcastIntents" android:label="@string/app_name"/>
    <receiver android:name="statusNotificationForGCMReceiver" android:label="@string/app_name">
       <intent-filter>
          <action android:name="android.test.BROADCAST" />
       </intent-filter>
    </receiver>

補遺:

インテントフィルターを使用すると、アクティビティに応答できる/応答できないものを通知できます(インテントによって呼び出された場合)。

public class InternalMessageReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context ctx, Intent intent) {
        String msg = intent.getStringExtra("message");
        Toast.makeText(ctx,msg,Toast.LENGTH_SHORT).show();
    }
}

たとえば、次のようにクリックされたボタンのアクティビティで呼び出すことができます。

private static final String ACTION = "android.test.BROADCAST";

public void onClick(View v) {
        /* Broadcast intent */
        Intent intent = new Intent(ACTION);
        intent.putExtra("message", msg);
        main_activity.sendBroadcast(intent);
}
于 2012-09-03T23:12:25.857 に答える