![](/img/trans.png)
[英]Checking internet connectivity in Android without ACCESS_NETWORK_STATE permission
[英]ACCESS_NETWORK_STATE permission on Android ICS
我在應用程序清單中聲明了權限ACCESS_NETWORK_STATE
如下。
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
在 Android 2.x 上一切都很好。 但在 Android ICS 上,它失敗並顯示以下日志貓。
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)
我更新了這樣的權限並且它有效。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
這是因為 ACCESS_NETWORK_STATE 用作連接管理器,這需要 INTERNET 連接。
我相信這是 Eclipse 的問題; 它無法刷新清單以加載權限。
我遇到了與原始海報相同的問題,並通過第二次添加權限解決了這個問題——但后來我能夠在不影響行為的情況下刪除權限。 這讓我懷疑 Eclipse 在我觸摸文件之前沒有正確加載權限。
只需添加以下權限,它就可以正常工作,我以前遇到過這個問題並與我一起解決
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET" />
Clean 然后 Build 項目為我解決了這個問題。
嗯,如果你默認添加,它將是:
<uses-permission android:name="ANDROID.PERMISSION.ACCESS_NETWORK_STATE"/>
如果您通過以下方式重新添加權限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
它工作正常。 難以置信的 ! 我花了2天
您缺少 Internet 權限。添加此權限將解決您的問題
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
清潔項目。 檢查清單文件。 某些包名稱更改或錯放的數據可能會導致此錯誤。
清理項目將起作用。
只需剪切<uses-permission android:name="android.permission.INTERNET" />
並粘貼上述所有權限。 它會工作得很好...
在您的代碼中,您會在調用之前檢查 Internet 可用性,以便您的應用程序不會在運行時崩潰。 為此,您必須訪問需要權限的“網絡狀態”:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
並且當 Internet 可用時,您的設備使用需要許可的“ INTERNET ”與服務器通信:
<uses-permission android:name="android.permission.INTERNET" />
就我而言, Clean Project和Rebuild Project都不起作用,我花了幾個小時來弄清楚如何擺脫這個 lint 錯誤。
我也害怕使用最后一個選項Invalidate Caches and Restart因為我可能會在將來回滾到文件的任何本地歷史記錄,以防出現任何錯誤。
所以最后,我選擇了以下選項。
你猜怎么着!它解決了我的問題。 因此,如果你們中的任何人仍在努力擺脫此錯誤,您可能想嘗試我的解決方案。 請讓我知道它是否有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.