想在网络请求之前进行一次“网络可用”的判断,如果网络不可用,我就不执行网络请求,直接return。
在android5.0是正常可以判断,并且弹出Toast。
但是android6.0的机子进行运行,不能弹出Toast。
网上搜索之后,有人说这是因为Toast不能用全局变量Context...还是迷茫不知道到底是怎么回事。望解答!
//检查网络方法,(context是从Activity得到传向HttpUtils的)
`private void checkNet(Context context){
isNetAvailable=NetWorkTools.isNetWork(context);
if(!isNetAvailable){
PromptManager.closeProgressDialog();
PromptManager.showToast(context, "网络不可用,请检查网络后再重试!");
return;
}
}
`
//HttpUtils的网络请求
public void login(Context context,HashMap<String, String> params, Response.Listener<String> successListener, Response.ErrorListener errorListener) {
checkNet(context);
System.out.println("params:" + params);
StringRequest request = new StringRequest(Method.POST, Constants.LOGIN, params, successListener,errorListener);
VolleyUtils.getInstance(mContext).addToRequestQueue(request);
}
望解答!谢谢!
阿神2017-04-18 09:15:46
PromptManager.showToast(); このメソッドは Toast クラスをカプセル化します。 Toast を直接使用して、6.0 電話機に問題があるかどうかを確認できます。都合がよければ、showToast(); メソッドも投稿してください。
阿神2017-04-18 09:15:46
トースト。アプリケーションのコンテキストを直接使用できます。また、モバイル アプリケーションが通知オプションをオフにしている場合、トーストは表示されません。
迷茫2017-04-18 09:15:46
上記の内容は正しいです。バージョン 6.0 以降では通知権限をオフにするとトーストが表示されなくなります。私の個人プロジェクト (7.0) ではトーストを使用しても問題ありません。具体的な実装ロジックを確認することをお勧めします。
PHPz2017-04-18 09:15:46
1. このアプリの通知が携帯電話でオフになっているかどうかを確認します。以前にもこの問題が発生しました。
2. 必要に応じて Toast.make().show() メソッドを使用して、Toast が表示されるかどうかを確認します
3. SnackBar を使用して Toast を置き換えることもできます