我正在嘗試使用ConnectivityManager的setMobileDataEnabled方法,並且出於某種原因,我在我的模擬器和實際設備上得到了不同的結果。 在我的設備(Nexus One的,運行的CyanogenMod 7.0)來調用這個函數,並設置移動數據設置正確時,它工作完全正常(後獲得這一功能使用反射):setMobileDataEnabled在模擬器上不起作用?
ConnectivityManager connService = (ConnectivityManager) p_context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (null != connService)
{
try
{
Method setMobileDataEnabledMethod = connService.getClass().getDeclaredMethod("setMobileDataEnabled", boolean.class);
if (null != setMobileDataEnabledMethod)
{
setMobileDataEnabledMethod.invoke(connService, true);
}
}
catch (Exception ex)
{
// Error
}
}
的問題是,當我「M使用相同代碼在模擬器上,我發現了以下異常:
java.lang.reflect.InvocationTargetException
at android.net.ConnectivityManager.setMobileDataEnabled(ConnectivityManager.java:379)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
Caused by: java.lang.SecurityException: Permission denial: writing to secure settings requires android.permission.WRITE_SECURE_SETTINGS
at android.os.Parcel.readException(Parcel.java:1247)
at android.os.Parcel.readException(Parcel.java:1235)
at android.net.IConnectivityManager$Stub$Proxy.setMobileDataEnabled(IConnectivityManager.java:540)
文檔中
無處(我能找到...)它指出‘WRITE_SECURE_SETTINGS’許可,才能進行這個功能,我想知道這是不是一個呃lator問題或在我的設備上運行的事實只是一些奇怪的重合?
在清單上添加WRITE_SECURE_SETTING權限。它將解決 – 2013-01-22 07:15:18