在Android应用程序中保存个人资料

时间:2017-11-23 11:02:30

标签: android file download

我有一个Android应用程序从服务器下载用户的个人资料图片,但我不知道如何保存它只有我的应用程序可以访问它。 我该怎么办?

3 个答案:

答案 0 :(得分:0)

大多数保存图片的应用基本上都做了两件事:

  1. 将图片另存为应用程序内部存储空间中的文件
  2. 将指向该文件的URI保存在应用程序的首选项中(如果您有许多首选项,则保存在数据库中)
  3. 您可以检查this link以获取位图,并this link检查URI

答案 1 :(得分:0)

link将帮助您存储为私人数据。

您可以使用以下代码

public void saveImage(Bitmap bitmap) {
         File imagePath = new File(Environment.getExternalStorageDirectory() + "/image.png");

        try {
            FileOutputStream fos = new FileOutputStream(imagePath);
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
            fos.flush();
            fos.close();
        } catch (FileNotFoundException e) {
            Log.e("GREC", e.getMessage(), e);
        } catch (IOException e) {
            Log.e("GREC", e.getMessage(), e);
        }
    }

在此之前,将图像转换为位图。 您应该首先获得访问外部存储的权限。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

在清单文件中使用它。

答案 2 :(得分:0)

我们还有另一种方法可以将图像存储在本地。 首先使用以下代码将BITMAP映像转换为base64字符串。

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();  
yourBitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream .toByteArray();
String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);

现在您可以将此base64字符串存储在共享首选项中,否则您可以使用某些数据库库(如“ObjectBox”)将其存储为模型类对象。

现在反向处理..Base64到位图转换。

byte[] decodedString = Base64.decode(encoded, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);