2015-12-02 6 views
0

Я пытаюсь передать команду adb на широковещательный приемник. Это было бы очень простая задача, но braodcast-приемник:adb broadcast with user ID

андроида: экспортироваться = "ложь"

На официальном вебсайте android.developer, он говорит:

Если «false», единственными сообщениями, которые может принимать широковещательный приемник, являются те, которые отправляются компонентами одного и того же приложения или приложений с одинаковым идентификатором пользователя.

Так что я пытаюсь добавить идентификатор пользователя в эфир. Мой подход к настоящему времени является следующий ADB команды:

> adb shell am broadcast -a com.example.action -n com.android.package/.receiverName --user "User_ID" 

Error: Invalid int: "User_ID" Я получаю в ЦМД под Windows. Это приложение является системным приложением, точнее, это телефонное приложение по умолчанию. Я думал, что команда Adb является системой по умолчанию. Мой вопрос заключается в следующем: есть ли способ отправить идентификатор пользователя в эфир или получить доступ к не экспортированным действиям? Может быть, разница между User_ID манифеста и User_ID широковещательной передачи am. Заранее спасибо

P.S: У меня нет доступа к корню, потому что он должен работать на множестве устройств, не укореняя всех. В качестве конечного результата я хочу принять входящую видеокальку в качестве Audiocall.

ответ

0

Есть совершенно другой пользователь.

Первый «пользователь», на веб-сайте android, является идентификатором пользователя в системе Linux, например root, system, u0_a58 (10058). У каждого APK есть свой идентификатор пользователя, если только в состоянии UID для совместного использования.

Вторым «пользователем» в команде am является пользовательский стенд для людей, которые используют этот телефон, например, администратор, гость.
(. Вы можете добавить пользователя Guest в Tab Android, но вы не можете сделать это в Android телефон, из-за какой-то правовой материал)

Ответ: нет никакого способа, чтобы получить доступ не экспортируемого компонента из non-root shell или третий APK.

+0

Спасибо, я искал ответ вроде этого, если есть разница между этими пользователями. Но действительно ли нет способа установить apk с тем же идентификатором пользователя, что и приложение для телефона? Что может передать это действие системному приложению? – Foster

+0

@Foster Существует способ, позволяющий двум APK иметь одинаковый идентификатор пользователя, два шага: 1, использовать android: sharedUserId в AndroidManifest.xml; 2, оба АПК должны быть подписаны одним и тем же сертификатом. [Http://developer.android.com/guide/topics/manifest/manifest-element.html#uid](http://developer.android.com/guide/topics/manifest/manifest-element.html#uid) – Swing

+0

Спасибо. Ну, это означает, что если я не автор приложений, я не смогу получить к ним доступ в простой форме. Что касается того же сертификата, мне понадобятся имя пользователя и пароль, верно? – Foster