想在网络请求之前进行一次“网络可用”的判断,如果网络不可用,我就不执行网络请求,直接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);
}
望解答!谢谢!
PromptManager.showToast(); 이 메소드는 Toast 클래스를 캡슐화합니다. Toast를 사용하여 6.0 휴대폰에 문제가 있는지 직접 확인할 수 있습니다. 편리하다면 showToast() 메소드도 게시해 주세요.
토스트는 애플리케이션의 컨텍스트를 직접 사용할 수 있습니다. 또한 모바일 애플리케이션에서 알림 옵션을 끄면 토스트를 볼 수 없습니다
위에 말씀하신 내용이 맞습니다. 버전 6.0 이상에서는 알림 권한을 끄면 토스트가 보이지 않으며, 제 개인 프로젝트(7.0)에서는 토스트를 사용하는데 문제가 없으니 구체적인 구현 로직을 확인하시는 것이 좋습니다. .
1. 휴대전화에서 이 앱 알림이 꺼져 있는지 확인하세요. 이전에 이 문제가 발생한 적이 있습니다.
2. 토스트가 나오는지 확인하려면 Toast.make().show() 메소드를 직접 사용하세요
3. Toast를 대체하려면 SnackBar를 사용할 수도 있습니다