Intereting Posts
Обнаружить разделителя, используемого для совместного использования какого-либо контента Как сохранить, экспортировать или конвертировать Android XML Drawable в качестве файла изображения PNG? Как преобразовать double в строку в android OnFling для TextView не работает Лучший способ создать слайд-анимацию в Android-приложении? Как создать ключ API для GCM? Аутентификация сторон сервера входа в систему Google для Android в Nodejs Добавление альбома в фотоальбом Android (в коде) Почему jcenter не разрешает зависимость, а mavenCentral может? Android – при выходе из WebView звук все еще продолжает воспроизводиться Как опубликовать на стене Facebook, используя SDK для Android android, без открытия диалогового окна Ресурсы Android не найдены на некоторых устройствах Используя Otto, метод подписывается только в том случае, если я вызываю его непосредственно в другом месте Flickr API на Android? Плавающая кнопка Action и ошибка инфляции библиотеки дизайна

Как передать контекст активности в приложении в службу в другом приложении

Поэтому у меня есть активность в приложении, которое запускает службу:

private void startService() { if (started) { Toast.makeText(Main.this, "Service already started", Toast.LENGTH_SHORT).show(); } else { Intent i = new Intent(); i.setClassName("com.enorbitas.daemon.service", "com.enorbitas.daemon.service.DaemonService"); startService(i); started = true; updateServiceStatus(); Log.d(getClass().getSimpleName(), "startService()"); } } 

Деятельность запускается следующим образом:

 <intent-filter> <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" /> </intent-filter> 

Затем служба выполняет регистрацию и подключается к этому пользовательскому USB-устройству. Для этого ему необходим контекст активности:

  mUsbManager = (UsbManager) parent.getSystemService(Context.USB_SERVICE); HashMap<String, UsbDevice> deviceList = mUsbManager.getDeviceList(); Iterator<UsbDevice> deviceIterator = deviceList.values().iterator(); while(deviceIterator.hasNext()){ UsbDevice device = deviceIterator.next(); } Intent intent = parent.getIntent(); String action = intent.getAction(); UsbDevice device = (UsbDevice) intent .getParcelableExtra(UsbManager.EXTRA_DEVICE); if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) { setDevice(device); Log.i(TAG, "usb conectado"); } else if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) { if (mDevice != null && mDevice.equals(device)) { setDevice(null); Log.i(TAG, "usb NO conectado"); } } в  mUsbManager = (UsbManager) parent.getSystemService(Context.USB_SERVICE); HashMap<String, UsbDevice> deviceList = mUsbManager.getDeviceList(); Iterator<UsbDevice> deviceIterator = deviceList.values().iterator(); while(deviceIterator.hasNext()){ UsbDevice device = deviceIterator.next(); } Intent intent = parent.getIntent(); String action = intent.getAction(); UsbDevice device = (UsbDevice) intent .getParcelableExtra(UsbManager.EXTRA_DEVICE); if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) { setDevice(device); Log.i(TAG, "usb conectado"); } else if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) { if (mDevice != null && mDevice.equals(device)) { setDevice(null); Log.i(TAG, "usb NO conectado"); } } 

Родителем будет активность, запускающая службу. Этот подход использовался, потому что этот код использовался в одном приложении, но теперь я хочу, чтобы он был сервисом, чтобы другие приложения могли подключаться к нему.

Есть ли способ передать контекст активности сервису? Я много читал о намерениях и связках, о возможности и сериализации, но ничто из этого не работает для меня. Мне нужно передать контекст.

Есть идеи?

У каждой службы есть свой Контекст, просто используйте это. Вам не нужно передавать контекст службы.

Я не понимаю, почему для контекста getSystemService() требуется конкретный контекст getSystemService() и Служба будет получать Intents из BroadcastReceiver так же легко, как и любое действие.

Кроме того, если инициирующая активность будет уничтожена во время выполнения этой Службы, Контекст будет недействительным или действие будет пропущено …

Как передать контекст активности в приложении в службу в другом приложении

Это невозможно. Эти приложения работают в отдельных виртуальных машинах в отдельных приложениях – вы не можете передавать объект через эти границы.

Возможно, Interprocess-коммуникация может вам помочь.

Некоторые случайные слайды IPC для Google google