在发布此问题之前,我已尝试到处寻找。 我正在开发一个实现Retrofit的应用程序来处理所有服务器交互。 everthing工作正常,但当我在Android M上测试应用程序时(设备:huawei P9 / P9 Lite) 只有在设备连接WIFI时才会调用改装回调。 具体来说:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Constants.SECONDARY_BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
RestaurantApi restaurantApi = retrofit.create(RestaurantApi.class);
Call<ServerResponse> call = restaurantApi.deleteFromFavoris(preferences.getInt("id", 0), getArguments().getInt("idResto"));
//asynchronous bestOfCall
call.enqueue(BestOfFragment.this);
正如你所看到的那样,这是一个直截了当的呼唤。但由于某种原因,当手机使用移动数据时,永远不会调用回叫(在Android监视器上没有消息或例外)。并且他是回调
@Override
public void onResponse(Call<ServerResponse> call, Response<ServerResponse> response) {
if (response.code() == 200) {
Toast.makeText(getActivity().getApplicationContext(), "Supprimé des favoris", Toast.LENGTH_SHORT).show();
getArguments().putBoolean("isFavoris", false);
}
}
@Override
public void onFailure(Call<ServerResponse> call, Throwable t) {
Toast.makeText(getActivity().getApplicationContext(), "Désolé une erreur inattendue est survenue !!", Toast.LENGTH_SHORT).show();
}
答案 0 :(得分:1)
您可以先验证设备是否具有移动互联网连接:
public void hasNetworkConnection() {
ConnectivityManager cm = (ConnectivityManager) getActivity().getApplicationContext()
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo == null) {
Toast.makeText(getActivity().getApplicationContext(), "No internet !!", Toast.LENGTH_SHORT).show();
return;
}
if (networkInfo.getTypeName().equalsIgnoreCase("WIFI"))
if (networkInfo.isConnected())
Toast.makeText(getActivity().getApplicationContext(), "Mobile internet !!", Toast.LENGTH_SHORT).show();
if (networkInfo.getTypeName().equalsIgnoreCase("MOBILE"))
if (networkInfo.isConnected())
Toast.makeText(getActivity().getApplicationContext(), "Wifi internet !!", Toast.LENGTH_SHORT).show();
}
您可以为非200代码响应添加其他内容:
@Override
public void onResponse(Call<ServerResponse> call, Response<ServerResponse> response) {
if (response.code() == 200) {
Toast.makeText(getActivity().getApplicationContext(), "Supprimé des favoris", Toast.LENGTH_SHORT).show();
getArguments().putBoolean("isFavoris", false);
}else{
Toast.makeText(getActivity().getApplicationContext(), "no 200", Toast.LENGTH_SHORT).show();
}
}