android.content.BroadcastReceiver#onReceive ( )源码实例Demo

下面列出了android.content.BroadcastReceiver#onReceive ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: blessed-android   文件: BluetoothPeripheralTest.java
@Test
public void onBondStateChangedBonded() throws Exception {
    connectAndGetCallback();

    Field field = BluetoothPeripheral.class.getDeclaredField("bondStateReceiver");
    field.setAccessible(true);
    BroadcastReceiver broadcastReceiver = (BroadcastReceiver) field.get(peripheral);

    Intent intent = mock(Intent.class);
    when(intent.getAction()).thenReturn(BluetoothDevice.ACTION_BOND_STATE_CHANGED);
    when(intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, BluetoothDevice.ERROR)).thenReturn(BOND_BONDED);
    when(intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE)).thenReturn(device);

    broadcastReceiver.onReceive(context, intent);

    verify(gatt).discoverServices();
}
 
源代码2 项目: blessed-android   文件: BluetoothPeripheralTest.java
@Test
public void onBondStateChangedNone() throws Exception {
    connectAndGetCallback();

    Field field = BluetoothPeripheral.class.getDeclaredField("bondStateReceiver");
    field.setAccessible(true);
    BroadcastReceiver broadcastReceiver = (BroadcastReceiver) field.get(peripheral);

    Intent intent = mock(Intent.class);
    when(intent.getAction()).thenReturn(BluetoothDevice.ACTION_BOND_STATE_CHANGED);
    when(intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, BluetoothDevice.ERROR)).thenReturn(BluetoothDevice.BOND_NONE);
    when(intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE)).thenReturn(device);

    broadcastReceiver.onReceive(context, intent);

    verify(gatt).disconnect();
}
 
源代码3 项目: container   文件: VClientImpl.java
private void handleReceiver(ReceiverData data) {
    BroadcastReceiver.PendingResult result = data.resultData.build();
    try {
        Context context = createPackageContext(data.component.getPackageName());
        Context receiverContext = ContextImpl.getReceiverRestrictedContext.call(context);
        String className = data.component.getClassName();
        BroadcastReceiver receiver = (BroadcastReceiver) context.getClassLoader().loadClass(className).newInstance();
        mirror.android.content.BroadcastReceiver.setPendingResult.call(receiver, result);
        data.intent.setExtrasClassLoader(context.getClassLoader());
        receiver.onReceive(receiverContext, data.intent);
        if (mirror.android.content.BroadcastReceiver.getPendingResult.call(receiver) != null) {
            result.finish();
        }
    } catch (Exception e) {
        e.printStackTrace();
        throw new RuntimeException(
                "Unable to start receiver " + data.component
                        + ": " + e.toString(), e);
    }
    VActivityManager.get().broadcastFinish(data.resultData);
}
 
@Test
public void onReceive() throws Exception {

    //one
    ShadowApplication application = ShadowApplication.getInstance();
    Intent intent = new Intent(ACTION);
    boolean result = application.hasReceiverForIntent(intent);
    assertTrue(result);

    //only one
    List<BroadcastReceiver> receivers = application.getReceiversForIntent(intent);
    assertEquals(1,receivers.size());

    //test onReceive
    intent.putExtra("c","off");
    BroadcastReceiver targetReceiver = receivers.get(0);
    targetReceiver.onReceive(application.getApplicationContext(),intent);

    Intent serviceIntent = application.getNextStoppedService();
    assertEquals(serviceIntent.getComponent().getClassName(),AnalyzerService.class.getCanonicalName());
}
 
源代码5 项目: blessed-android   文件: BluetoothPeripheralTest.java
@Test
public void queueTestRetryCommand() throws Exception {
    BluetoothGattCallback callback = connectAndGetCallback();
    callback.onConnectionStateChange(gatt, GATT_SUCCESS, STATE_CONNECTED);

    BluetoothGattService service = new BluetoothGattService(SERVICE_UUID, 0);
    BluetoothGattCharacteristic characteristic = new BluetoothGattCharacteristic(UUID.fromString("00002A1C-0000-1000-8000-00805f9b34fb"),PROPERTY_READ,0);
    BluetoothGattCharacteristic characteristic2 = new BluetoothGattCharacteristic(UUID.fromString("00002A1E-0000-1000-8000-00805f9b34fb"),PROPERTY_READ,0);
    service.addCharacteristic(characteristic);
    service.addCharacteristic(characteristic2);
    when(gatt.readCharacteristic(characteristic)).thenReturn(true);
    when(gatt.getServices()).thenReturn(Arrays.asList(service));

    peripheral.readCharacteristic(characteristic);

    verify(gatt).readCharacteristic(characteristic);

    // Trigger bonding to start
    callback.onCharacteristicRead(gatt, characteristic, 5);

    Field field = BluetoothPeripheral.class.getDeclaredField("bondStateReceiver");
    field.setAccessible(true);
    BroadcastReceiver broadcastReceiver = (BroadcastReceiver) field.get(peripheral);

    Intent intent = mock(Intent.class);
    when(intent.getAction()).thenReturn(BluetoothDevice.ACTION_BOND_STATE_CHANGED);
    when(intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, BluetoothDevice.ERROR)).thenReturn(BOND_BONDED);
    when(intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE)).thenReturn(device);

    broadcastReceiver.onReceive(context, intent);

    ShadowLooper.runUiThreadTasksIncludingDelayedTasks();

    verify(gatt, times(2)).readCharacteristic(characteristic);
}
 
源代码6 项目: green_android   文件: GaService.java
public void onBound(final Context ctx) {
    // Update our state when network connectivity changes.
    final BroadcastReceiver netConnectivityReceiver = new BroadcastReceiver() {
        public void onReceive(final Context context, final Intent intent) {
            onNetConnectivityChanged();
        }
    };
    ctx.registerReceiver(netConnectivityReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
    // Fire a fake connectivity change to kick start the state machine
    netConnectivityReceiver.onReceive(null, null);
}
 
源代码7 项目: GreenBits   文件: GaService.java
public void onBound(final GreenAddressApplication app) {
    // Update our state when network connectivity changes.
    mNetConnectivityReceiver = new BroadcastReceiver() {
        public void onReceive(final Context context, final Intent intent) {
            onNetConnectivityChanged();
        }
    };
    app.registerReceiver(mNetConnectivityReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
    // Fire a fake connectivity change to kick start the state machine
    mNetConnectivityReceiver.onReceive(null, null);
}
 
源代码8 项目: tlplib   文件: InstallReferrerReceiver.java
private void broadcastEvent(Context context, Intent intent) {
    List<BroadcastReceiver> proxyClasses = getBroadcastReceivers(context, "TLPLibInstallReferrerReceiver");

    for (BroadcastReceiver r : proxyClasses) {
        try {
            r.onReceive(context, intent);
            Log.i(TAG, "Called onReceive on: " + r.getClass().getName());
        }
        catch (Exception e) {
            Log.e(TAG, "Exception calling onReceive: " + e.getMessage());
        }
    }
}
 
源代码9 项目: AndroidComponentPlugin   文件: LoadedApk.java
public final Runnable getRunnable() {
    return () -> {
        final BroadcastReceiver receiver = mReceiver;
        final boolean ordered = mOrdered;

        if (ActivityThread.DEBUG_BROADCAST) {
            int seq = mCurIntent.getIntExtra("seq", -1);
            Slog.i(ActivityThread.TAG, "Dispatching broadcast " + mCurIntent.getAction()
                    + " seq=" + seq + " to " + mReceiver);
            Slog.i(ActivityThread.TAG, "  mRegistered=" + mRegistered
                    + " mOrderedHint=" + ordered);
        }

        final IActivityManager mgr = ActivityManager.getService();
        final Intent intent = mCurIntent;
        if (intent == null) {
            Log.wtf(TAG, "Null intent being dispatched, mDispatched=" + mDispatched
                    + ": run() previously called at "
                    + Log.getStackTraceString(mPreviousRunStacktrace));
        }

        mCurIntent = null;
        mDispatched = true;
        mPreviousRunStacktrace = new Throwable("Previous stacktrace");
        if (receiver == null || intent == null || mForgotten) {
            if (mRegistered && ordered) {
                if (ActivityThread.DEBUG_BROADCAST) Slog.i(ActivityThread.TAG,
                        "Finishing null broadcast to " + mReceiver);
                sendFinished(mgr);
            }
            return;
        }

        Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "broadcastReceiveReg");
        try {
            ClassLoader cl = mReceiver.getClass().getClassLoader();
            intent.setExtrasClassLoader(cl);
            intent.prepareToEnterProcess();
            setExtrasClassLoader(cl);
            receiver.setPendingResult(this);
            receiver.onReceive(mContext, intent);
        } catch (Exception e) {
            if (mRegistered && ordered) {
                if (ActivityThread.DEBUG_BROADCAST) Slog.i(ActivityThread.TAG,
                        "Finishing failed broadcast to " + mReceiver);
                sendFinished(mgr);
            }
            if (mInstrumentation == null ||
                    !mInstrumentation.onException(mReceiver, e)) {
                Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
                throw new RuntimeException(
                        "Error receiving broadcast " + intent
                                + " in " + mReceiver, e);
            }
        }

        if (receiver.getPendingResult() != null) {
            finish();
        }
        Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
    };
}
 
源代码10 项目: android_9.0.0_r45   文件: LoadedApk.java
public final Runnable getRunnable() {
    return () -> {
        final BroadcastReceiver receiver = mReceiver;
        final boolean ordered = mOrdered;

        if (ActivityThread.DEBUG_BROADCAST) {
            int seq = mCurIntent.getIntExtra("seq", -1);
            Slog.i(ActivityThread.TAG, "Dispatching broadcast " + mCurIntent.getAction()
                    + " seq=" + seq + " to " + mReceiver);
            Slog.i(ActivityThread.TAG, "  mRegistered=" + mRegistered
                    + " mOrderedHint=" + ordered);
        }

        final IActivityManager mgr = ActivityManager.getService();
        final Intent intent = mCurIntent;
        if (intent == null) {
            Log.wtf(TAG, "Null intent being dispatched, mDispatched=" + mDispatched
                    + ": run() previously called at "
                    + Log.getStackTraceString(mPreviousRunStacktrace));
        }

        mCurIntent = null;
        mDispatched = true;
        mPreviousRunStacktrace = new Throwable("Previous stacktrace");
        if (receiver == null || intent == null || mForgotten) {
            if (mRegistered && ordered) {
                if (ActivityThread.DEBUG_BROADCAST) Slog.i(ActivityThread.TAG,
                        "Finishing null broadcast to " + mReceiver);
                sendFinished(mgr);
            }
            return;
        }

        Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "broadcastReceiveReg");
        try {
            ClassLoader cl = mReceiver.getClass().getClassLoader();
            intent.setExtrasClassLoader(cl);
            intent.prepareToEnterProcess();
            setExtrasClassLoader(cl);
            receiver.setPendingResult(this);
            receiver.onReceive(mContext, intent);
        } catch (Exception e) {
            if (mRegistered && ordered) {
                if (ActivityThread.DEBUG_BROADCAST) Slog.i(ActivityThread.TAG,
                        "Finishing failed broadcast to " + mReceiver);
                sendFinished(mgr);
            }
            if (mInstrumentation == null ||
                    !mInstrumentation.onException(mReceiver, e)) {
                Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
                throw new RuntimeException(
                        "Error receiving broadcast " + intent
                                + " in " + mReceiver, e);
            }
        }

        if (receiver.getPendingResult() != null) {
            finish();
        }
        Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
    };
}
 
源代码11 项目: condom   文件: CondomCore.java
void proceedBroadcast(final Context context, final Intent intent, final WrappedValueProcedure<Boolean> procedure,
					  final @Nullable BroadcastReceiver resultReceiver) {
	if (proceed(OutboundType.BROADCAST, intent, Boolean.FALSE, procedure) == Boolean.FALSE && resultReceiver != null)
		resultReceiver.onReceive(new ReceiverRestrictedContext(context), intent);
}
 
@Test
public void testSnapshotAfterValidBroadcasts() {
  // Set up the collector
  ShadowSystemClock.setElapsedRealtime(5000);
  when(mContext.registerReceiver(
          Matchers.isNull(BroadcastReceiver.class), Matchers.any(IntentFilter.class)))
      .thenReturn(createBatteryIntent(BatteryManager.BATTERY_STATUS_CHARGING, 50, 100));
  when(mContext.registerReceiver(
          Matchers.isNotNull(BroadcastReceiver.class), Matchers.any(IntentFilter.class)))
      .thenReturn(null);
  DeviceBatteryMetrics metrics = new DeviceBatteryMetrics();
  DeviceBatteryMetricsCollector collector = new DeviceBatteryMetricsCollector(mContext);

  // Get a handle of the receiver
  ArgumentCaptor<BroadcastReceiver> captor = ArgumentCaptor.forClass(BroadcastReceiver.class);
  verify(mContext, times(2)).registerReceiver(captor.capture(), Matchers.any(IntentFilter.class));
  final List<BroadcastReceiver> receivers = captor.getAllValues();
  assertThat(receivers.size()).isEqualTo(2);
  BroadcastReceiver receiver = receivers.get(1);
  assertThat(receiver).isNotNull();

  // Simulate connecting and disconnecting power
  ShadowSystemClock.setElapsedRealtime(9000);
  receiver.onReceive(mContext, new Intent(Intent.ACTION_POWER_DISCONNECTED));
  ShadowSystemClock.setElapsedRealtime(15000);
  receiver.onReceive(mContext, new Intent(Intent.ACTION_POWER_CONNECTED));
  ShadowSystemClock.setElapsedRealtime(22000);
  receiver.onReceive(mContext, new Intent(Intent.ACTION_POWER_DISCONNECTED));

  // Get snapshot
  ShadowSystemClock.setElapsedRealtime(28000);
  when(mContext.registerReceiver(
          Matchers.isNull(BroadcastReceiver.class), Matchers.any(IntentFilter.class)))
      .thenReturn(createBatteryIntent(BatteryManager.BATTERY_STATUS_CHARGING, 20, 100));
  collector.getSnapshot(metrics);
  verifySnapshot(metrics, 20, 12000, 11000);

  // Power Connected and test getSnapshot
  ShadowSystemClock.setElapsedRealtime(30000);
  receiver.onReceive(mContext, new Intent(Intent.ACTION_POWER_CONNECTED));
  ShadowSystemClock.setElapsedRealtime(42000);
  when(mContext.registerReceiver(
          Matchers.isNull(BroadcastReceiver.class), Matchers.any(IntentFilter.class)))
      .thenReturn(createBatteryIntent(BatteryManager.BATTERY_STATUS_CHARGING, 30, 100));
  collector.getSnapshot(metrics);
  verifySnapshot(metrics, 30, 14000, 23000);

  // PowerConnected and testGetSnapshot (Check for two consecutive CONNECTED intents)
  ShadowSystemClock.setElapsedRealtime(50000);
  receiver.onReceive(mContext, new Intent(Intent.ACTION_POWER_CONNECTED));
  ShadowSystemClock.setElapsedRealtime(51000);
  when(mContext.registerReceiver(
          Matchers.isNull(BroadcastReceiver.class), Matchers.any(IntentFilter.class)))
      .thenReturn(createBatteryIntent(BatteryManager.BATTERY_STATUS_CHARGING, 40, 100));
  collector.getSnapshot(metrics);
  verifySnapshot(metrics, 40, 14000, 32000);

  // Test for 2 consecutive powerdisconnected intents
  ShadowSystemClock.setElapsedRealtime(55000);
  receiver.onReceive(mContext, new Intent(Intent.ACTION_POWER_DISCONNECTED));
  ShadowSystemClock.setElapsedRealtime(59000);
  receiver.onReceive(mContext, new Intent(Intent.ACTION_POWER_DISCONNECTED));
  ShadowSystemClock.setElapsedRealtime(65000);
  when(mContext.registerReceiver(
          Matchers.isNull(BroadcastReceiver.class), Matchers.any(IntentFilter.class)))
      .thenReturn(createBatteryIntent(BatteryManager.BATTERY_STATUS_CHARGING, 60, 100));
  collector.getSnapshot(metrics);
  verifySnapshot(metrics, 60, 24000, 36000);
}
 
源代码13 项目: RxAppState   文件: FakeApplication.java
public void notifyReceivers(@NonNull Intent intent) {
  for (BroadcastReceiver receiver : receivers) {
    receiver.onReceive(this, intent);
  }
}
 
 同类方法