私が取り組んでいるアプリでは、ユーザーがメッセージを受け取るたびに、メッセージの内容がBroadcastReceiver
を使ってアプリに配信されます。私はこのインテントにフィールドを追加して、いくつかの追加情報を取得したいのですが、インテントがどこから来たのか分かりません。ここで BroadcastReceiverインテントはどこから来たのですか?どのように変更できますか?
onReceive()
方法:これらは私のマニフェストファイル内にある意図-フィルタでも
IntentFilter intFilt = new IntentFilter(BROADCAST_ACTION);
getActivity().registerReceiver(br, intFilt);
:
br = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
int task = intent.getIntExtra(PARAM_TASK, 0);
int status = intent.getIntExtra(PARAM_STATUS, 0);
int msgId = intent.getIntExtra("msgId", 0);
long msgFromUserId = intent.getLongExtra("msgFromUserId", 0);
int msgFromUserState = intent.getIntExtra("msgFromUserState", 0);
int msgFromUserVerify = intent.getIntExtra("msgFromUserVerify", 0);
String msgFromUserUsername = intent.getStringExtra("msgFromUserUsername");
String msgFromUserFullname = intent.getStringExtra("msgFromUserFullname");
String msgFromUserPhotoUrl = intent.getStringExtra("msgFromUserPhotoUrl");
String msgMessage = intent.getStringExtra("msgMessage");
String msgImgUrl = intent.getStringExtra("msgImgUrl");
int msgCreateAt = intent.getIntExtra("msgCreateAt", 0);
String msgDate = intent.getStringExtra("msgDate");
String msgTimeAgo = intent.getStringExtra("msgTimeAgo");
int msgTransactionValue = intent.getIntExtra("transValue",0);
Chat1Item c = new Chat1Item();
c.setId(msgId);
c.setFromUserId(msgFromUserId);
c.setFromUserState(msgFromUserState);
c.setFromUserVerify(msgFromUserVerify);
c.setFromUserUsername(msgFromUserUsername);
c.setFromUserFullname(msgFromUserFullname);
c.setFromUserPhotoUrl(msgFromUserPhotoUrl);
c.setMessage(msgMessage);
c.setImgUrl(msgImgUrl);
c.setCreateAt(msgCreateAt);
c.setDate(msgDate);
c.setTimeAgo(msgTimeAgo);
c.setTransactionValue(msgTransactionValue);
Log.e(LOG_TAG, "onReceive: task = " + task + ", status = " + status + " " + c.getMessage() + " " + Integer.toString(c.getId()));
final Chat1Item lastItem = (Chat1Item)
listView.getAdapter().getItem(listView.getAdapter().getCount() - 1);
messagesCount = messagesCount + 1;
chat1List.add(c);
if (!visible) {
try {
Uri notification =
RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone r = RingtoneManager.getRingtone(getActivity(), notification);
r.play();
} catch (Exception e) {
e.printStackTrace();
}
}
chatAdapter.notifyDataSetChanged();
scrollListViewToBottom();
getNextMessages();
}
が、それはまたBroadcastReceiver
を登録するIntentFilterを使用しています:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<service
android:name="com.thetasocial.app.service.MyFcmListenerService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service
android:name="com.thetasocial.app.service.MyInstanceIDListenerService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<service
android:name="com.thetasocial.app.service.MyService"
android:exported="false" />
私にスターを与える手がかり〜からt。前もって感謝します。
最後に見つけました!あなたは正しかった、それは地元の意図だった。問題は、アンドロイドスタジオのFind usage for useのショートカットが二重の 'shift'だと思っていたことでした。前もって感謝します。 –
@HosseinFarrokhi:アップ投票答え: – Jeevanandhan
私はすでに答えをupvotedしているが、私は15未満の評判を持っているので、それは表示されません:) –