2015-12-02 68 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