2012-11-28 91 views
19

我想这个权限添加到我的Android清单:权限仅授予系统的应用程序,在清单

<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" /> 

但经过我贴在我的清单此权限,它测试的红色下划线和说:

权限只授给系统应用

我能做什么?

+0

什么API调用中使用? –

+0

@ A - C我正在尝试这个教程。 http://androidsourcecode.blogspot.in/2010/10/blocking-incoming-call-android.html –

+0

我可以看到为什么这个应用程序需要权限。看看评论,但其他人有这个问题,至少姜饼。 –

回答

59

MODIFY_PHONE_STATE权限被授予唯一的系统应用。

为了您的信息,有两种类型的Android应用程式:系统&用户

用户应用是通过谷歌刚刚所有的正常应用安装Play商店,亚马逊的Appstore或侧面加载。这些进入你的Android手机的/数据分区,这是用于用户数据和应用程序的内部存储器的一部分。

系统应用程序基本上是预装在您的ROM中的应用程序。在标准的Android用户环境中,用户不具有对/ system分区的写入权限,因此无法直接安装或卸载系统应用程序。

为了您的Android设备上安装应用程序的系统应用, 您的设备必须被根植或安装自定义恢复(或两者)

这就是说,该错误实际上是错误的,因为你有一个有效的代码和编译应该工作。如果它发出警告,那会更好。在Eclipse中,您可以轻松修复它。只需要:

窗口 - >首选项 - > Android - > Lint错误检查。

从列表中查找ProtectedPermission和严重程度设置(例如信息)比其他错误的东西。这样你的项目仍然会编译。

+0

它的工作..非常感谢您节省我的时间 – Shalini

6

MODIFY_PHONE_STATE是仅限系统的权限。系统应用程序可以预先安装到系统文件夹中或由制造商使用其安全证书进行编译。

因此,如果您正在尝试执行此操作,则尝试使用不再受支持的API。使用Android 2.3或更高版本,您可以监控传入呼叫,但不允许阻止(我认为从您发布的链接开始,您正在尝试执行的操作)。

Android的问题,如果你需要遵循:Issue 15022Issue 14789

+0

是的,我试图阻止来电,所以这个问题真的很糟糕。 –

+0

那么,Play商店中的某些应用程序可以如何阻止呼叫? –

+0

我不会阻止通话。他们说他们会这样做,但他们所能做的只是通知用户(当被阻止的号码呼叫时),但不能完全阻止它。所有这些当然都是Android 2.3+版本。 – Nerd

4

当您更改清单时,此错误出现在SDK 19以后。 做项目清理和生成。 它应该清除此错误。

+1

这应该是一个评论,而不是一个答案 –

2

只是清理项目会被罚款这样的:

项目>清洁...

+0

nope。这不会在这种情况下帮助。 –

2

因为这是系统级权限设备开发商不授予此所以应用程序开发工具也警告反对这个如此你要简单地点击项目,并清除该项目

0

查找ProtectedPermission从列表

Window -> Preferences -> Android -> Lint Error Checking. 

并将严重性设置为除错误之外的其他信息(例如,info)。这样你的项目仍然会编译。

0

有四种权限的

Regular 
Dangerous 
Signed 
Signed or System 

The first two can be used by Simple Apps其他两人只能由应用程序,它是建立在框架您使用需要这个权限

相关问题