Я пытаюсь получить результаты обнаружения Bluetooth через apk, который работает как Android junit runner. Все работает нормально, но пока registerReciever я получаю сообщение об ошибке ниже. Что может быть причиной ?
java.lang.SecurityException: данный вызывающий пакет com.ex.test не запущен в процессе ProcessRecord {d740580 19462: com.ex/u0a302}
Код-
@Test
public void demo() throws Exception {
Context ctx = InstrumentationRegistry.getInstrumentation().getContext();
BluetoothAdapter mBtAdapter = BluetoothAdapter.getDefaultAdapter();
if (mBtAdapter.isDiscovering()) {
System.out.println("Stop ongoing discovery");
mBtAdapter.cancelDiscovery();
}
System.out.println("Start fresh discovery");
mBtAdapter.startDiscovery();
DisciveryRecv dReceiver = new DisciveryRecv ();
// Register for broadcasts when a device is discovered
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
ctx.registerReceiver(dReceiver, filter);
}
public class DisciveryRecv extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
String dev = device.getName() + " - " + device.getAddress();
mUtils.log("Found: " + dev);
}
}
}
startDiscovery работает нормально, но в ctx.registerReceiver(dReceiver, filter);
приложение выдает исключение.
Инструментарий cmd-
adb shell am tool -w -r -e debug false -e class com.ex.main#demo com.ex/android.support.test.runner.AndroidJUnitRunner