2016-12-02 98 views
0

我需要以编程方式打开/关闭移动数据。对于这个问题,我需要使用MODIFY_PHONE_STATE权限。 正如我们在最新的Android版本中所知道的那样,对于非根植电话是不可能的,除非该应用具有系统权限。Android:如何获得系统权限officialy

我知道存在一些解决方法,如何将系统应用程序签名为应用程序。但据我所知,Play商店不可能发布这样的应用程序。

我的问题是未来 - 是否有可能正式获得系统权限?如果可能的话,我必须去找他们?

+0

“是否可以正式获得系统权限?” - 建立你自己的自定义ROM。然后,用用于签署ROM的签名密钥签署您的应用程序。或者,与设备制造商签署分销协议,他们将在那里用他们的ROM签名密钥签署您的应用程序。 – CommonsWare

+0

谢谢你的回答。当我需要一个应用程序来使系统正常时,创建自定义光盘是不合适的。而分销协议可能是可以接受的决定。但我不明白一件事 - 为什么我应该与设备制造商谈谈,而不是与OS创建者(Google)?它应该是哪个制造商?这是否意味着,如果我与三星达成协议,那么我的应用程序将在三星设备上工作,并且不会在HTC设备上运行(例如)? – user2775914

回答

1

得到它们的唯一方法是根植设备,或者自己构建设备映像。系统权限的概念是只有系统创建者(OEM)信任的应用才能请求它们。您也可以通过为设备生根来获取它们,因为它们的授权方式(基于安装该应用程序的目录,如果您拥有根目录,则可以访问该目录)。但是没有root或没有创建你自己的操作系统映像是没有办法的。

+0

谢谢你的回答。在我的情况下,启动设备是不可接受的。我理解系统权限的想法。其实我正在谈论这个问题 - 我该怎么做才能成为值得信赖的应用?谁应该相信我?设备制造商(ROM创建者)?这是否意味着如果我想在自己的设备上运行我的应用程序,我应该与每个制造商交谈? – user2775914

+1

OEM(或其他人安装系统映像)。基本上,如果你不能根,你必须是一个预先安装的应用程序。因此,不要让OEM让您成为值得信赖的应用程序,而是让用户在购买应用程序时安装您的应用程序。他们会以这样的价格来做到这一点,或者如果你非常受欢迎(如Facebook流行),但它并不便宜。 –

0

MODIFY_PHONE_STATE是一个仅限于系统的权限,因此无法获得该权限,除非您为您的电话创建根目录。