Android ICS上的ACCESS_NETWORK_STATE权限

时间:2012-10-08 08:46:25

标签: android permissions

我在应用程序清单中声明了权限ACCESS_NETWORK_STATE,如下所示。

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

Android 2.x上的一切都很好。但是在Android ICS上,它失败了以下log cat。

 java.lang.SecurityException: ConnectivityService: Neither user 10093
 nor current process has android.permission.ACCESS_NETWORK_STATE. at
 android.os.Parcel.readException(Parcel.java:1327) at
 android.os.Parcel.readException(Parcel.java:1281) at
 android.net.IConnectivityManager$Stub$Proxy.getActiveNetworkInfo(IConnectivityManager.java:663)
 at
 android.net.ConnectivityManager.getActiveNetworkInfo(ConnectivityManager.java:455)
 at com.tapfortap.AdView.getNetwork(AdView.java:146) at
 com.tapfortap.AdView.loadAdsWithAppId(AdView.java:133) at
 com.tapfortap.AdView.access$100(AdView.java:47) at
 com.tapfortap.AdView$1$1.run(AdView.java:88) at
 android.os.Handler.handleCallback(Handler.java:605) at
 android.os.Handler.dispatchMessage(Handler.java:92) at
 android.os.Looper.loop(Looper.java:137) at
 android.app.ActivityThread.main(ActivityThread.java:4503) at
 java.lang.reflect.Method.invokeNative(Native Method) at
 java.lang.reflect.Method.invoke(Method.java:511) at
 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576) at
 dalvik.system.NativeStart.main(Native Method)

10 个答案:

答案 0 :(得分:30)

这应该是Android ICS框架的错误。我刚刚通过再次添加此权限解决了这个问题:

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

难以置信!

答案 1 :(得分:10)

我相信这是Eclipse的一个问题;它无法刷新清单以加载权限。

我遇到了与原始海报相同的问题,并通过第二次添加权限解决了这个问题 - 但后来我能够在不影响行为的情况下删除权限。这让我怀疑Eclipse在我触摸文件之前没有正确加载权限。

答案 2 :(得分:10)

只需添加以下权限,它就可以正常使用,我之前遇到过这个问题并与我一起解决

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

答案 3 :(得分:2)

清理然后Build项目为我解决了这个问题。

答案 4 :(得分:2)

呃 - 哦,如果你默认添加,它将是:

<uses-permission android:name="ANDROID.PERMISSION.ACCESS_NETWORK_STATE"/>

如果您通过以下方式重新添加权限:

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

工作正常。 难以置信的 !我花了2天

答案 5 :(得分:2)

你错过了互联网权限。如果这个许可它会纠正你的问题

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

答案 6 :(得分:1)

清洁项目。检查清单文件。某些包名称更改或放错位置的数据可能会导致此错误。

清洁项目将有效。

答案 7 :(得分:0)

只需剪切<uses-permission android:name="android.permission.INTERNET" />并粘贴以上所有权限即可。它会正常工作......

答案 8 :(得分:0)

在您的代码中,您可能会在拨打电话之前检查互联网可用性,以便您的应用在运行时不会崩溃。为此,您必须访问需要权限的“网络状态”:

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

当互联网可用时,您的设备使用需要权限的“ INTERNET ”与服务器通信:

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

答案 9 :(得分:0)

就我而言,清理项目重建项目均无效,我花了数小时来弄清楚如何消除此皮棉错误。

我还担心使用最后一个选项使缓存无效并重新启动,因为将来如果发生任何错误,我可能会回滚到文件的任何本地历史记录。

所以最后,我选择了以下选项。

  1. 我选择了 File-> Invalidate Caches and Restart
  2. 它打开了一个弹出窗口。然后,我选择了仅重新启动选项。

猜猜是什么!它解决了我的问题。因此,如果你们中的任何一个仍在努力摆脱这个错误,您可能想尝试我的解决方案。让我知道它是否有效。