4Manuals

  • PDF Cloud HOME

应用关闭后,我无法从图库上传我的imageview以便留下来 Download

    如何在Android中使用WebRTC缩放相机 春季启动-Couchbase AbstractCouchbaseConfiguration-如何避免覆盖不必要的方法 Android 10,API29:在应用程序文件夹中使用C ++库编写文件会使应用程序崩溃 我不知道(未解决的编译问题:) 如何将动态值传递给渐变xml 加载数据并推送到未显示的RecyclerView中 调用Model类的函数时出现java.lang.NullPointerException 字符串数组在for循环中初始化时忽略索引0 从网络加载图像时,“接收到完整的报头之前关闭连接 Spring MVC @ModelAttribute未填充AJAX发布请求

应用程序关闭后,我无法从图库中上传我的imageview以便保留。我已经看过其他这样的问题,但对我来说不起作用。我尝试了共享首选项,但无法正常工作。我可能做错了。有人可以看一下我的代码吗?我希望从图库上载的imageview即使在应用程序关闭后也能保留在imageview中。我希望仅当从图库中上传新照片时才更改它。我已经尝试了共享首选项,但是我敢肯定我做错了。我在下面的代码中。我还使用了base64。 需要帮助。。谢谢

这是我的代码:

package com.example.upload;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Base64;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

import androidx.annotation.NonNull;

import com.squareup.picasso.Picasso;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.URI;

public class MainActivity extends Activity {
    String TAG = "Hello";
    private Button mButtonChooseImage;
    private ImageView mImageView;
    private Uri mImageUri;
    private static final int PICK_IMAGE_REQUEST = 1;
    private Bitmap bitmap;
    private static int RESULT_LOAD_IMG = 1;
    String imgDecodableString;
    private String selectedImagePath;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mImageView = (ImageView) findViewById(R.id.image_view);
        mButtonChooseImage = (Button) findViewById(R.id.button_choose_image);

        mButtonChooseImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openFileChooser();
            }

        });

        Intent intent = getIntent();

        if (getIntent().getExtras() != null) {
            // for get data from intent

            bitmap = intent.getParcelableExtra("PRODUCT_PHOTO");

            // for set this picture to imageview

            mImageView.setImageBitmap(bitmap);

            sharedPreferences();

        } else {
            retrivesharedPreferences();
        }
    }

    private void sharedPreferences() {
        SharedPreferences shared = getSharedPreferences("App_settings", MODE_PRIVATE);
        SharedPreferences.Editor editor = shared.edit();
        editor.putString("PRODUCT_PHOTO", encodeTobase64(bitmap));
        editor.commit();
    }

    private void retrivesharedPreferences() {
        SharedPreferences shared = getSharedPreferences("MyApp_Settings", MODE_PRIVATE);
        String photo = shared.getString("PRODUCT_PHOTO", "photo");
        assert photo != null;
        if (!photo.equals("photo")) {
            byte[] b = Base64.decode(photo, Base64.DEFAULT);
            InputStream is = new ByteArrayInputStream(b);
            bitmap = BitmapFactory.decodeStream(is);
            mImageView.setImageBitmap(bitmap);

        }

    }

    public static String encodeTobase64(Bitmap image) {
        Bitmap bitmap_image = image;
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bitmap_image.compress(Bitmap.CompressFormat.PNG, 100, baos);
        byte[] b = baos.toByteArray();
        String imageEncoded = Base64.encodeToString(b, Base64.DEFAULT);

        return imageEncoded;
    }

    private void openFileChooser() {
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(intent, PICK_IMAGE_REQUEST);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
            mImageUri = data.getData();

            Picasso.get().load(mImageUri).into(mImageView);
            selectedImagePath = getPath(mImageUri);

        }
    }

    private String getPath(Uri mImageUri) {
        if (mImageUri == null) {
        }
        return null;
    }

    @Override
    protected void onResume() {
        SharedPreferences sp = getSharedPreferences("AppSharedPref", MODE_PRIVATE);
        selectedImagePath = sp.getString("ImagePath", "");
        Bitmap myBitmap = BitmapFactory.decodeFile(selectedImagePath);
        mImageView.setImageBitmap(myBitmap);
        Picasso.get().load(mImageUri).into(mImageView);

        super.onResume();

    }

    public void ff(View view) {
        Intent i = new Intent(this, Main2Activity.class);
        startActivity(i);
    }

}

0 个答案:

没有答案



Similar searches
    Jenkins中的主机密钥验证失败 如何在UWP应用程序中将证书添加到受信任的根证书颁发机构 Sonarqube与Postgres docker-compose。 Sonarqube无法正常工作 预测测试数据中的resp字段时出现问题 如何使用android studio以特殊格式上传数据(如下图所示)