联系人有android.permission.CALL_PRIVILEGED权限为什么还会报这个错

来源:互联网 发布:win7旗舰版激活软件 编辑:程序博客网 时间:2024/06/11 02:38

如果修改联系人后,重新打包和签名安装后,拨打电话会报如题中的错误,这是因为:

这个权限是不对外开放的,请看:
    /**
     * Activity action: Perform a call to any number (emergency or not)
     * specified by the data.
     * <p>Input: {@link #getData} is URI of a phone number to be dialed or a
     * tel: URI of an explicit phone number.
     * <p>Output: nothing.
     * @hide
     */
    public static final String ACTION_CALL_PRIVILEGED = "android.intent.action.CALL_PRIVILEGED";

 

我的理解是因为编译环境不同造成的,第三方APK是基于android.jar公开的API进行开发的,所以一旦某个方法被打上hide标签,在Eclipse里面就引用不到(它其实是存在的)。但是源码环境是直接基于源码编译的,并不是依赖android.jar的。

解决的办法是,将intent的action Intent.ACTION_CALL_PRIVILEGED改成Intent.ACTION_CALL,这样就可以了。

如果是重新制作ROM包的话,则不需要这样改,在重新打包和签名后,直接push进system/app底下,然后再开机重启即可!

原创粉丝点击