I have an application that includes a service ( WifiDirectFileTransferService) and a broadcast receiver ( WifiDirectBroadcastReceiver). A broadcast receiver is used to receive global broadcast messages (for WifiP2PManager.WIFI_P2P_..._ACTION). This part, receiving global broadcasts, works great.
Then I tried to configure the same broadcast receiver to get local broadcast, for RECEIVED_MESSAGE_DONE_ACTION. When I already registered a receiver for global broadcasts in my activity, I added a local registration:
@Override
protected void onResume() {
super.onResume();
registerReceiver(mReceiver, mIntentFilter);
Log.i(TAG, "onResume: registering local broadcast receiver " + mLocalIntentFilter.getAction(0));
LocalBroadcastManager.getInstance(getApplicationContext())
.registerReceiver(mReceiver, mLocalIntentFilter);
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(mReceiver);
Log.i(TAG, "onPause: unregistering local broadcast receiver " + mLocalIntentFilter.getAction(0));
LocalBroadcastManager.getInstance(getApplicationContext())
.unregisterReceiver(mReceiver);
}
Magazine messages confirm that the broadcast receiver is registering and not registering before the broadcast.
The local intent filter is initialized as follows onCreate()::
mLocalIntentFilter.addAction(WifiDirectBroadcastReceiver.RECEIVED_MESSAGE_DONE_ACTION);
onHandleIntent():
Intent broadcastIntent = new Intent(RECEIVED_MESSAGE_DONE_ACTION)
.putExtra(EXTRA_OTHER_DEVICE_ADDRESS, senderAddress.getHostAddress());
Log.i(TAG, "receiveMessage(): broadcasting " + broadcastIntent.toString());
LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(intent);
BroadcastReceiver onReceive() .
?
, ? ... , , - . ( , .)
, , ? , . , BroadcastReceiver . : , , .
, , , LocalBroadcastManager.
. , getApplicationContext() LocalBroadcastManager.getInstance(), , . .
2
.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
...
<activity android:name=".activity.ShareActivity"
android:theme="@style/Theme.AppCompat.NoActionBar" />
<service android:name=".comm.WifiDirectFileTransferService" />
, , , .