【问题标题】:How to save "Image Name" in Shared Preference from JSON response with retrofit API?如何使用改造 API 从 JSON 响应中将“图像名称”保存在共享首选项中?
【发布时间】:2019-03-07 13:13:08
【问题描述】:

我已经从相机捕获图像并通过上传 API 上传,现在我已经成功响应:

{ "msg": "Image Upload Successful", "status": 1, "image": "115648975487_1551435779.png" }

我很困惑在共享首选项中保存“图像”名称并在下一次 API 调用中将此名称作为参数发送。

这是我通过 Retrofit API 上传图片的代码:

public void imageUpload(final String imageEncoded){
    file = new File(imageEncoded);
    MultipartBody.Builder builder = new MultipartBody.Builder();
    builder.setType(MultipartBody.FORM);
    builder.addFormDataPart("image", file.getName(), RequestBody.create(MediaType.parse("multipart/form-data"), file));

    ApiCall.callPostRetrofit(context, AppConstants.uploadImage, builder, new ApiCallBackListner() {
        @Override
        public void onResponse(String response) {
            try {
                JSONObject jsonObject = new JSONObject(response);
                String msg = jsonObject.getString("msg");
                String status = jsonObject.getString("status");

            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

        @Override
        public void onError(String error) {

        }
    });
}

【问题讨论】:

  • 试试 GSON。这是解析Json的更好方法。

标签: android sharedpreferences retrofit retrofit2 jsonresponse


【解决方案1】:

这个类包含 saveImage()getUser() 方法,用于保存或从共享偏好中获取价值。

public class SessionManager {
    SharedPreferences pref;
    SharedPreferences.Editor editor;
    Context _context;
    int PRIVATE_MODE = 0;
    private static final String PREF_NAME = "Pref";
    public static  final String KEY_IMAGE="image";




    public SessionManager(Context context) {
        this._context = context;
        pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
        editor = pref.edit();
    }

    public void saveImage(String imagename) {
        editor.putString(KEY_IMAGE,imagename);
        editor.commit();
    }

    public String getuser(String KeyName)
    {
        return pref.getString(KeyName,null);
    }




}

那么,

public void imageUpload(final String imageEncoded){
    SessionManager session=new SessionManager(this);

    file = new File(imageEncoded);
    MultipartBody.Builder builder = new MultipartBody.Builder();
    builder.setType(MultipartBody.FORM);
    builder.addFormDataPart("image", file.getName(), RequestBody.create(MediaType.parse("multipart/form-data"), file));

    ApiCall.callPostRetrofit(context, AppConstants.uploadImage, builder, new ApiCallBackListner() {
        @Override
        public void onResponse(String response) {
            try {
                JSONObject jsonObject = new JSONObject(response);
                String msg = jsonObject.getString("msg");
                String status = jsonObject.getString("status");
                String image=jsonObject.getString("image");
                session.saveImage(image);// saving image name to shared preference.

            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

        @Override
        public void onError(String error) {

        }
    });
}

要从 sharedpreference 中获取图像名称,只需在该活动或片段中编写一些代码行:-

SessionManager session=new SessionManager(context);
session.getuser(SessionManager.KEY_IMAGE );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多