1

このアプリは、アクティブなインターネット接続がないと動作しないはずです。ただし、のようなファイアウォールアプリがインターネットへのアクセスを拒否している場合、およびを介したインターネット接続のチェックは機能しません(ファイアウォールConnectivityManagerルール)NetworkInfoDroidWall

一部のファイアウォールアプリがアプリへのインターネットアクセスをブロックしていることをどのように検出できますか?

たとえば、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

ご覧のとおり、アプリが起動し、パーサーがリモートコンテンツのダウンロードを開始したときに、インターネット接続(wifiまたはモバイルデータ)が存在するかどうかを検出するメカニズムが失敗しました。

一部のアプリがファイアウォールルールによってブロックされているかどうかをインターネット接続メカニズムがチェックできるようにする追加機能を実装する必要があります(Playストアアプリのように)。

4

1 に答える 1

1

アプリケーションがクラッシュしている場合は、キャッチしていない例外がスローされます。

キャッチで利用可能なインターネット接続try/catch and pop a toast notificationがないことで接続コードを囲むようにしてください。また、デバッグツールからの例外を投稿しますか?コードを投稿していないので、どのような例外が発生するのか知りたいです...

于 2012-12-05T11:40:37.097 に答える