如果沒有激活的Internet連接,此應用程序無法正常工作。但是,如果防火牆應用程序DroidWall
拒絕訪問Internet(防火牆規則),則通過ConnectivityManager
和NetworkInfo
檢查Internet連接不起作用。如何檢測防火牆阻止了對某些應用程序的Internet訪問?
如何檢測某些防火牆應用程序阻止了Internet應用程序的訪問?
例如,如果我啓動Google Play商店應用,則會明確指出「沒有Internet連接」。如果我啓動我的應用程序,它會掛起(試圖下載內容),然後崩潰並出現錯誤。
編輯
這是錯誤的logcat中捕獲。
12-05 12:44:51.417: E/AndroidRuntime(18922): java.lang.RuntimeException: An error occured while executing doInBackground()
12-05 12:44:51.417: E/AndroidRuntime(18922): at android.os.AsyncTask$3.done(AsyncTask.java:278)
12-05 12:44:51.417: E/AndroidRuntime(18922): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
12-05 12:44:51.417: E/AndroidRuntime(18922): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
12-05 12:44:51.417: E/AndroidRuntime(18922): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
12-05 12:44:51.417: E/AndroidRuntime(18922): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
12-05 12:44:51.417: E/AndroidRuntime(18922): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
12-05 12:44:51.417: E/AndroidRuntime(18922): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
12-05 12:44:51.417: E/AndroidRuntime(18922): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
12-05 12:44:51.417: E/AndroidRuntime(18922): at java.lang.Thread.run(Thread.java:856)
12-05 12:44:51.417: E/AndroidRuntime(18922): Caused by: java.lang.NullPointerException
12-05 12:44:51.417: E/AndroidRuntime(18922): at com.app.android.MainActivity$ParserAsyncTask.doInBackground(MainActivity.java:345)
12-05 12:44:51.417: E/AndroidRuntime(18922): at com.app.android.MainActivity$ParserAsyncTask.doInBackground(MainActivity.java:367)
12-05 12:44:51.417: E/AndroidRuntime(18922): at android.os.AsyncTask$2.call(AsyncTask.java:264)
12-05 12:44:51.417: E/AndroidRuntime(18922): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
12-05 12:44:51.417: E/AndroidRuntime(18922): ... 5 more
正如你看到的,其檢測是否Internet連接(WiFi或移動數據)的機制存在,或作爲應用程序啓動未發生故障的解析器開始下載遠程內容。
我需要實現額外的功能,這將允許互聯網連接機制,以檢查某些應用程序是否被某些防火牆規則阻止(如Play商店應用程序)。
你可以請發佈錯誤?完全例外。 – LonWolf
@LonWolf我已經完成了。 – sandalone
嘗試做我下面的建議。並添加拋出NullPointerException的代碼 - 在mainactivity.java第345-> 367行。很有可能防火牆導致你的連接變量變爲空,而你沒有測試這個。只需檢查它已返回將解決您的問題。 – LonWolf