将位图图像保存到外部存储工作nexus 4 htc令人惊讶,但没有工作在一些samung设备,如note和s4

时间:2014-05-30 18:51:48

标签: android bitmap save sd-card save-image

这是我的壁纸应用程序代码。用户抱怨应用程序在按下保存到SD时崩溃,但它在我的nexus 4和htc amaze上工作正常。最常见的问题来自三星设备,如音符n700和s4以及其他一些主要是三星。

//called when pressed save to sd button
 bmImg = BitmapFactory.decodeResource(getResources(),
                        R.drawable.m0);
                saveMyImage(" image0", bmImg);


////////////////////////////
///this is my method contains all code
void saveMyImage(String imageName, Bitmap bmImg) {
        String appName = "Wallpapers";

        File filename;

        try {
            String path1 = Environment.getExternalStorageDirectory().toString();
              if(android.os.Build.DEVICE.contains("Samsung") || android.os.Build.MANUFACTURER.contains("Samsung")){
                        path1 = path1 + "/storage/extSdCard";
              }

        //  String path1 = android.os.Environment.getExternalStorageDirectory()
            //      .toString();
            File file = new File(path1 + "/" + appName);
            if (!file.exists())
                file.mkdirs();
            filename = new File(file.getAbsolutePath() + "/" + imageName
                    + ".jpg");
            FileOutputStream out = new FileOutputStream(filename);
            //
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            //
            bmImg.compress(Bitmap.CompressFormat.JPEG,  75,
                    byteArrayOutputStream);
            //out.flush();
            byte[] bsResized = byteArrayOutputStream.toByteArray();
            out.write(bsResized);
            //
            out.close();
            ContentValues image = new ContentValues();
            image.put(Images.Media.TITLE, appName);
            image.put(Images.Media.DISPLAY_NAME, imageName);
            image.put(Images.Media.DESCRIPTION, "App Image");
            image.put(Images.Media.DATE_ADDED, System.currentTimeMillis());
            image.put(Images.Media.MIME_TYPE, "image/jpg");
            image.put(Images.Media.ORIENTATION, 0);
            File parent = filename.getParentFile();
            image.put(Images.ImageColumns.BUCKET_ID, parent.toString()
                    .toLowerCase().hashCode());
            image.put(Images.ImageColumns.BUCKET_DISPLAY_NAME, parent.getName()
                    .toLowerCase());
            image.put(Images.Media.SIZE, filename.length());
            image.put(Images.Media.DATA, filename.getAbsolutePath());
            Uri result = getContentResolver().insert(
                    MediaStore.Images.Media.EXTERNAL_CONTENT_URI, image);
            Toast.makeText(getApplicationContext(),
                    "File is Saved in  " + filename, Toast.LENGTH_SHORT).show();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

0 个答案:

没有答案