2015-12-02 69 views
0

我試圖向廣播接收機廣播adb命令。這將是一個非常簡單的任務,但braodcast接收器有:adb廣播與用戶ID

機器人:出口= 「假」

在官方網站android.developer,它說:

如果是「false」,則廣播接收器可以接收的唯一消息是由具有相同用戶ID的相同應用程序或應用程序的組件發送的消息。

所以我試圖將用戶ID添加到廣播。現在我的做法是以下ADB命令:

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

我在Windows cmd下得到Error: Invalid int: "User_ID"。此應用程序是一個System-app,更精確,它是默認的電話應用程序。我以爲Adb命令是默認的系統廣播。因此,我的問題是:有沒有辦法通過廣播發送用戶ID或訪問未導出的操作?清單的User_ID和am廣播的User_ID可能有所不同。在此先感謝

P.S:我沒有任何root訪問權限,因爲它應該適用於許多設備,而不需要每個人都生根。作爲最終結果,我想接受一個傳入的視頻電話作爲Audiocall。

回答

0

有完全不同的用戶。

android網站中的第一個「用戶」是linux系統中的用戶標識,如root,system,u0_a58(10058)。每個APK都有它的用戶ID,除非在共享UID條件下。

am命令中的第二個「用戶」是使用此電話的用戶的用戶名,例如管理員,來賓。
(您可以在Android的選項卡中添加Guest用戶,但你不能做一個Android手機,由於一些法律的東西)

答案:有沒有辦法從一個訪問未導出組件非根shell或第三個APK。

+0

謝謝,我正在尋找這樣的答案,如果這些用戶之間存在差異。但是,真的沒有辦法像安裝手機應用程序一樣使用相同的用戶ID來安裝apk。那麼能夠將此操作廣播到系統應用程序? – Foster

+0

@Foster有兩種方法讓兩個APK具有相同的用戶ID,分兩步:1,在AndroidManifest.xml中使用android:sharedUserId; 2,這兩個APK需要由相同的證書籤名。 [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