应用程序关闭后,我无法从图库中上传我的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 个答案:
没有答案