广播接收器未接收 android.Looking 中的意图数据,解决方案
Broadcast Receiver is not receiveing the intent data in android.Looking for Solution
我正在尝试将意图数据发送到 MainActivity
。我正在从 GCM Server
接收数据,我想将接收到的数据发送到我的 MainActivity
。
在 GcmBroadcastReceiver Class
ComponentName comp = new ComponentName(context.getPackageName(),
GcmIntentService.class.getName());
startWakefulService(context, (intent.setComponent(comp)));
setResultCode(Activity.RESULT_OK);
Bundle extras = intent.getExtras();
Intent i = new Intent("CHAT_MESSAGE_RECEIVED");
i.putExtra("Message", extras.getString("Message"));
i.putExtra("Sender",extras.getString("Sender"));
i.putExtra("Receiver",extras.getString("Receiver"));
i.putExtra("Calltype",extras.getString("calltype"));
context.sendBroadcast(i);
我使用以上代码从 GCM Sever
接收数据,并使用 BroadcastReceiver
发送数据。
在MainActivity中Class
registerReceiver(broadcastReceiver,newIntentFilter("CHAT_MESSAGE_RECEIVED"));
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Bundle b = intent.getExtras();
String message = b.getString("Message");
String sender=b.getString("Sender");
String receiver=b.getString("Receiver");
}
};
在activity中我使用了广播接收器来接收带有数据的意图。
想知道您是否在 AndroidManifest.xml 中声明了 BroadcastReceiver。
<receiver android:name=".YourBroadCastReceiver" />
In your GcmListenerService # onMessageRecieved() function use this code
Intent intent = new Intent(ANY_TAG);
sendBroadcast(intent);
AND in your activity use following code
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
displayToast(" Data received");
}
};
@Override
public void onResume() {
super.onResume();
getContext().registerReceiver(mMessageReceiver, new IntentFilter(ANY_TAG));
}
@Override
public void onPause() {
super.onPause();
getContext().unregisterReceiver(mMessageReceiver);
}
// 使用可观察对象作为接口
public class ObservableObject extends Observable {
private static ObservableObject instance = new ObservableObject();
public static ObservableObject getInstance() {
return instance;
}
private ObservableObject() {
}
public void updateValue(Object data) {
synchronized (this) {
setChanged();
notifyObservers(data);
}
}
}
// 主接收器
public class MainReceiver extends BroadcastReceiver
{
public final static String MAINRECEIVERSETALARM="ir.shes.schedule.MainReceiver.setalarm";
public final static String MAINRECEIVERSNOOZE="ir.shes.schedule.MainReceiver.snooze";
@Override
public void onReceive(Context p1, Intent p2)
{
ObservableObject.getInstance().updateValue(p2);
}
}
// 主活动
public class MainActivity extends Activity implements Observer
{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ObservableObject.getInstance().addObserver(this);
}
@Override
public void update(Observable observable, Object data) {
String action=((Intent)data).getAction();
if (action.equals(MainReceiver.MAINRECEIVERSETALARM))
app.eventCache.setAlarm();
if (action.equals(MainReceiver.MAINRECEIVERSNOOZE))
Toast.makeText(this, "snooze", Toast.LENGTH_LONG).show();
}
}
// AndroidManifest.xml
中的静态寄存器接收器
<receiver android:name="ir.shes.schedule.MainReceiver">
<intent-filter>
<action android:name="ir.shes.schedule.MainReceiver.setalarm" />
<action android:name="ir.shes.schedule.MainReceiver.snooze" />
</intent-filter>
</receiver>
我正在尝试将意图数据发送到 MainActivity
。我正在从 GCM Server
接收数据,我想将接收到的数据发送到我的 MainActivity
。
在 GcmBroadcastReceiver Class
ComponentName comp = new ComponentName(context.getPackageName(),
GcmIntentService.class.getName());
startWakefulService(context, (intent.setComponent(comp)));
setResultCode(Activity.RESULT_OK);
Bundle extras = intent.getExtras();
Intent i = new Intent("CHAT_MESSAGE_RECEIVED");
i.putExtra("Message", extras.getString("Message"));
i.putExtra("Sender",extras.getString("Sender"));
i.putExtra("Receiver",extras.getString("Receiver"));
i.putExtra("Calltype",extras.getString("calltype"));
context.sendBroadcast(i);
我使用以上代码从 GCM Sever
接收数据,并使用 BroadcastReceiver
发送数据。
在MainActivity中Class
registerReceiver(broadcastReceiver,newIntentFilter("CHAT_MESSAGE_RECEIVED"));
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Bundle b = intent.getExtras();
String message = b.getString("Message");
String sender=b.getString("Sender");
String receiver=b.getString("Receiver");
}
};
在activity中我使用了广播接收器来接收带有数据的意图。
想知道您是否在 AndroidManifest.xml 中声明了 BroadcastReceiver。
<receiver android:name=".YourBroadCastReceiver" />
In your GcmListenerService # onMessageRecieved() function use this code
Intent intent = new Intent(ANY_TAG);
sendBroadcast(intent);
AND in your activity use following code
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
displayToast(" Data received");
}
};
@Override
public void onResume() {
super.onResume();
getContext().registerReceiver(mMessageReceiver, new IntentFilter(ANY_TAG));
}
@Override
public void onPause() {
super.onPause();
getContext().unregisterReceiver(mMessageReceiver);
}
// 使用可观察对象作为接口
public class ObservableObject extends Observable {
private static ObservableObject instance = new ObservableObject();
public static ObservableObject getInstance() {
return instance;
}
private ObservableObject() {
}
public void updateValue(Object data) {
synchronized (this) {
setChanged();
notifyObservers(data);
}
}
}
// 主接收器
public class MainReceiver extends BroadcastReceiver
{
public final static String MAINRECEIVERSETALARM="ir.shes.schedule.MainReceiver.setalarm";
public final static String MAINRECEIVERSNOOZE="ir.shes.schedule.MainReceiver.snooze";
@Override
public void onReceive(Context p1, Intent p2)
{
ObservableObject.getInstance().updateValue(p2);
}
}
// 主活动
public class MainActivity extends Activity implements Observer
{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ObservableObject.getInstance().addObserver(this);
}
@Override
public void update(Observable observable, Object data) {
String action=((Intent)data).getAction();
if (action.equals(MainReceiver.MAINRECEIVERSETALARM))
app.eventCache.setAlarm();
if (action.equals(MainReceiver.MAINRECEIVERSNOOZE))
Toast.makeText(this, "snooze", Toast.LENGTH_LONG).show();
}
}
// AndroidManifest.xml
中的静态寄存器接收器<receiver android:name="ir.shes.schedule.MainReceiver">
<intent-filter>
<action android:name="ir.shes.schedule.MainReceiver.setalarm" />
<action android:name="ir.shes.schedule.MainReceiver.snooze" />
</intent-filter>
</receiver>