【发布时间】:2021-11-13 23:51:26
【问题描述】:
我的应用在实时环境中遇到问题。当我生成用于测试的调试版本并对其进行彻底测试时,一切正常,但是当我将我的应用程序上传到谷歌播放控制台然后在生产应用程序中时,我遇到了很多问题。例如,当我尝试登录应用程序时,在输入正确的凭据并单击登录按钮后,会生成一个加载程序,加载几秒钟后,它会在登录屏幕本身上停止。理想情况下,用户应该能够登录,但屏幕不会将用户重定向到主屏幕。
我已经检查了在邮递员中点击登录 api url,它工作正常。我还通过 USB 电缆连接生产应用程序检查了 logcat,logcat 显示正在调用 api,我也可以看到响应。
请问可能是什么原因..
这是用于调用 rest api 以进行登录的改造代码。
private void userLoginApi() {
if (Util.isConnectingToInternet(getActivity())) {
CommonMethods.showLoading(getActivity());
MultipartBody.Builder builder = new MultipartBody.Builder();
builder.setType(MultipartBody.FORM);
builder.addFormDataPart(Constants.MOBILE, mobileEt.getText().toString());
builder.addFormDataPart(Constants.PASSWORD, passwordEt.getText().toString());
builder.addFormDataPart(Constants.DEVICE_ID, token);
builder.addFormDataPart(Constants.LANGUAGE, SharedPref.getSharedPreferences(getActivity(), Constants.LANGUAGE));
MultipartBody requestBody = builder.build();
RetrofitClient.getAPIService().user_login(requestBody).enqueue(new Callback<RetroResponse>() {
@Override
public void onResponse(Call<RetroResponse> call, Response<RetroResponse> response) {
CommonMethods.dismissLoading();
try {
if (response.body().getStatus() == 200) {
Pref.with(getApplicationContext()).getSharedPreferences().edit().putBoolean("isLogin", false)
.putString("admin_id", response.body().getId())
.putString("first_name", response.body().getData().getFirstName())
.putString("email", response.body().getData().getEmail())
.apply();
userID = response.body().getData().getUser_id();
SharedPref.setSharedPreference(getActivity(), Constants.USER_ID, response.body().getData().getUser_id());
SharedPref.setSharedPreference(getActivity(), Constants.ADMIN_ID, response.body().getId());
SharedPref.setSharedPreference(getActivity(), Constants.FIRST_NAME, response.body().getData().getFirstName());
SharedPref.setSharedPreference(getActivity(), Constants.LAST_NAME, response.body().getData().getLastName());
SharedPref.setSharedPreference(getActivity(), Constants.EMAIL, response.body().getData().getEmail());
SharedPref.setSharedPreference(getActivity(), Constants.MOBILE, response.body().getData().getMobile());
SharedPref.setSharedPreference(getActivity(), Constants.USER_MOBILE, response.body().getData().getMobile());
SharedPref.setSharedPreference(getActivity(), Constants.PROFILE_CITY, response.body().getData().getCity());
startActivity(new Intent(getActivity(), UserHomeActivity.class)
.putExtra("screen_type", "")
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK));
getActivity().finish();
} else if (response.body().getStatus() == 204) {
Util.ShowToastMessage(getActivity(), response.body().getMessage());
mobileEt.setText("");
passwordEt.setText("");
captchaCheck.setChecked(false);
captchaVerified = false;
} else if (response.body().getStatus() == 401) {
Util.ShowToastMessage(getActivity(), "Something went wrong");
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call<RetroResponse> call, Throwable t) {
CommonMethods.dismissLoading();
}
});
} else {
Util.ShowToastMessage(getActivity(), R.string.internet_connection);
}
}
这个 api 被成功调用,我在 logcat 中检查了它。但在此之后,用户不会被重定向到预期的屏幕。
【问题讨论】:
-
Hey Umang,请发布您遇到问题的代码。
-
发布您的 AndroidManifest.xml 文件以及您正在测试的 API 级别。
-
嘿@JamesPalfrey 我已经更新了用于登录的代码,我的项目有问题,请检查一下。
-
@SurajBahadur 我不确定我是否可以发布 AndroidManifest.xml 文件对不起,但我可以告诉你我在项目中的以下详细信息:minSdkVersion 21 targetSdkVersion 30 useLibrary 'org.apache.http.legacy ' versionCode 25 versionName "1.4.2" multiDexEnabled true testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" ,我不会在测试或生产时更改这些东西。 Android studiogradle 版本为:4.2.1
-
@UmangUpadhyay 请检查答案,让我知道它是否有效
标签: android rest android-studio