Android Intent在三星A3中显示损坏的图像,并在xiaomi redmi note 3

时间:2016-12-27 12:10:33

标签: android image android-intent nativescript angular2-nativescript

我有一个使用android Intent的图像视图,代码如下。

//在全屏查看器中打开图像

showImageInViewer(项目){

let uri = '';
let root = android.os.Environment.getExternalStoragePublicDirectory(android.os.Environment.DIRECTORY_PICTURES).getAbsolutePath(); 

let localPath = fs.path.join(root, "One/media/" + item.value.conversationId);
localPath = fs.path.join(localPath, item.value.localpath+".jpg");
console.log("LocalPath si : " + localPath);

if(fs.File.exists(localPath)){
  // console.log("File exist on local");
  uri = localPath;
  var appModule_1 = require("application");
  var intent = new android.content.Intent(android.content.Intent.ACTION_VIEW);
  intent.setDataAndType(android.net.Uri.parse(localPath),"image/*");
  appModule_1.android.foregroundActivity.startActivity(intent);
} else {
  // console.log("File doesn't exist on local");
  Toast.makeText("Downloading Image").show();
  let image = new ImageModule.Image();
  imageSource.fromUrl(item.value.url).then((res: imageSource.ImageSource)=>{
    // console.log("Image Loading Successful");

    let inputBitmap = android.graphics.Bitmap.createBitmap(res.android);
    let nativeFile = void 0;
    let tempPictureUri = void 0;
    let baos = void 0;
    baos = new java.io.ByteArrayOutputStream();
    // console.log("Saving Image");
    inputBitmap.compress(android.graphics.Bitmap.CompressFormat.JPEG, 100, baos);
    let data = baos.toByteArray();
    let file = fs.File.fromPath(localPath);
    file.writeSync(data, (e) => { 
      // console.dump(e) 
    });
    inputBitmap.recycle();
    // android.media.
    var appModule_1 = require("application");
    var intent = new android.content.Intent(android.content.Intent.ACTION_VIEW);
    intent.setDataAndType(android.net.Uri.parse(localPath),"image/*");
    // intent.setAction(android.content.Intent.ACTION_GET_CONTENT);
    // intent.setAction(android.content.Intent.ACTION_VIEW);
    appModule_1.android.foregroundActivity.startActivity(intent);
  }).catch((error)=>{
    // console.dump(error);
  }); 

}

}

这将图像文件保存在文件存储中,其路径类似于: /storage/emulated/0/Pictures/One/media/-KYjJ_BTfQKI5gmNyl6T/-KZujwQZC6BlScebtpnn-m372.jpg

图像在Xiomi Redmi Note 3上正确显示,但在nexus和三星手机中没有打开相同的图像。

请帮忙

1 个答案:

答案 0 :(得分:1)

我明白了。它是图像的路径。它一定要是 : '文件://' +局部路径

我仍然不知道它是如何在小米上工作而不是在其他手机上。