如何检测防火墙是否阻止了某些应用的Internet访问?

时间:2012-12-05 11:32:42

标签: android firewall

如果没有有效的互联网连接,此应用必须无法运作。但是,如果ConnectivityManager等防火墙应用程序拒绝访问Internet(防火墙规则),则通过NetworkInfoDroidWall检查Internet连接不起作用。

如何检测到某些防火墙应用程序阻止了对我的应用程序的Internet访问?

例如,如果我启动Google Play商店应用,则会明确指出“无互联网连接”。如果我启动我的应用程序,它会挂起(尝试下载内容),然后崩溃并出现错误。

修改

这是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或移动数据)是否存在的机制失败。

我需要实现额外的功能,这将允许Internet连接机制检查某些应用是否被某些防火墙规则阻止(如Play商店应用程序确实)。

1 个答案:

答案 0 :(得分:1)

如果您的应用程序崩溃,那么它会抛出您没有捕获的异常。

尝试使用try/catch and pop a toast notification将您的连接代码包围在catch中有无互联网连接。另外,从调试工具发布异常?我很好奇你有什么例外,因为你没有发布任何代码...