2014-02-10 30 views
0

我需要在我的应用程序中打开android设备的数据连接。我的手机已经扎根,其系统是android 2.3.5。不幸的是,下面的失败:启用移动数据连接失败权限撤销

// open data connection 
Class telephonyManagerClz=TelephonyManager.class; 
Method mGetITelephony=telephonyManagerClz 
     .getDeclaredMethod("getITelephony"); 
mGetITelephony.setAccessible(true); 
Object iTelephony = mGetITelephony.invoke(tm); 
Method mEnableDataConn=iTelephony.getClass() 
     .getDeclaredMethod("enableDataConnectivity"); 
mEnableDataConn.setAccessible(true); 
mEnableDataConn.invoke(iTelephony); 

这是logcat中显示的异常: enter image description here

看来,我没有MODIFY_PHONE_STATE许可,但我已经将其添加到的Manifest.xml尚未。可能是什么问题呢?

回答

0

android.permission.MODIFY_PHONE_STATE是保留权限。如果您的应用程序使用系统证书签名,则只能使用系统权限。

在安装您的应用程序期间,您应该看到来自PackageManager的警告声明权限已被吊销。

虽然我并不完全熟悉对根目录设备的重写权限限制,但如果您尚未从源代码构建系统,则不太可能拥有该证书,系统将继续取消您的权限。我相信这是无法签署您的应用程序来使用它。

+0

所以它是一个不可达的目标,除非我签我的应用程序与系统证书? – monk

+0

您可能想尝试将您的应用推入设备的系统应用文件夹。 –

+0

好的,非常感谢。 – monk