ギャラリーから画像を選択していますが、最近のアプリから削除した画像も削除されました。画像が削除されても表示したい最近のアプリから、私はapp.pleaseで画像を保存したいのですが、私に総コードを教えてください。ギャラリーから画像を選択してAndroidアプリに保存する
ありがとうございました。
ギャラリーから画像を選択していますが、最近のアプリから削除した画像も削除されました。画像が削除されても表示したい最近のアプリから、私はapp.pleaseで画像を保存したいのですが、私に総コードを教えてください。ギャラリーから画像を選択してAndroidアプリに保存する
ありがとうございました。
アプリを破棄しても選択した画像を保存したい場合は、単にSharedPreferencesを使用しないでください。ファイルのパスを共有設定にするだけです。
コード:共有好みに選択されたパスを追加する
public class save
{
SharedPreferences sharedPreferences;
Context ctx;
public save(Context ctx,String file)
{
this.ctx =ctx;
sharedPreferences = this.ctx.getSharedPreferences(file,Context.MODE_PRIVATE);
}
public void store(String key,String value)
{
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(key,value);
editor.commit();
}
public String read(String key)
{
String v= sharedPreferences.getString(key, "nothing");
return v;
}
public void remove()
{
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.clear();
editor.commit();
}
public void delete(String str){
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.remove(str);
editor.commit();
}
public Map<String, ?> readall(){
Map<String, ?> allEntries = sharedPreferences.getAll();
return allEntries;
}}
が(メソッドストアを使用)。
共有環境設定からパスを削除するには、delete()メソッドを使用します。
すべての使用方法を削除するremove();
すべて読み取りreadall();
は、私の画像を保存するためだけに共有設定を使用しています。私のコードでは、その画像をbase64にエンコードしてから、共有の設定で保存し、別のアクティビティを使用するときに共有の設定から再びビットマップにデコードしています。それは完璧に動作しますが、ダッシュボードのアクティビティで再びイメージをデフォルトにリセットして使用しています。どうしてか分かりません? –
ありがとう@sandeshしかし、私の上記のコードを確認してください –
申し訳ありませんが、私は本当にやりたいことを理解していません。より多くの人々にあなたの質問に達するには、単にアンドロイドだけでなく、適切なタグを追加してください。そしてそれを再投稿する。 base64、android、galleryなどのタグを追加してください。これらのタグは適切な人に手を差し伸べるのに役立ちます。誰かがあなたを助けることを願って – sandesh
パッケージcom.developerscode.com.profile_activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Base64;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
/**
* Created by android on 6/5/16.
*/
public class MainActivity extends AppCompatActivity {
private int PICK_IMAGE_REQUEST = 1;
ImageView image;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
image = (ImageView) findViewById(R.id.image);
SharedPreferences myPrefrence = getPreferences(MODE_PRIVATE);
String imageS = myPrefrence.getString("imagePreferance", "");
Bitmap imageB;
if(!imageS.equals("")) {
imageB = decodeToBase64(imageS);
image.setImageBitmap(imageB);
}
}
public void selectImage(View v){
Intent intent = new Intent();
// Show only images, no videos or anything else
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
// Always show the chooser (if there are multiple options available)
intent.addCategory(Intent.CATEGORY_OPENABLE);
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) {
InputStream stream;
try {
Toast.makeText(MainActivity.this, "Image saved", Toast.LENGTH_SHORT).show();
stream = getContentResolver().openInputStream(data.getData());
Bitmap realImage = BitmapFactory.decodeStream(stream);
image.setImageBitmap(realImage);
SharedPreferences myPrefrence = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor = myPrefrence.edit();
editor.putString("imagePreferance", encodeToBase64(realImage));
editor.commit();
}
catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static String encodeToBase64(Bitmap image) {
Bitmap immage = image;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
immage.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] b = baos.toByteArray();
String imageEncoded = Base64.encodeToString(b, Base64.DEFAULT);
Log.d("Image Log:", imageEncoded);
return imageEncoded;
}
public static Bitmap decodeToBase64(String input) {
byte[] decodedByte = Base64.decode(input, 0);
return BitmapFactory.decodeByteArray(decodedByte, 0, decodedByte.length);
}
}
画像パスを保存するにはSQLiteデータベースが必要です。まずあなたのアプリケーションのためのデータベースを作成し、次にイメージを追加します。 –
[今後の使用のためにギャラリーから選んだ画像を保存する]の複製が可能です(http://stackoverflow.com/questions/18668377/saving-image-picked-from-gallery-for-future-use) –
私はあなたに完全なコードを与えましたあなたが満足している場合は、回答として受け入れます。 – sandesh