0

Ich habe eine Bildansicht mit Android Intent mit dem folgenden Code.Android Intent zeigt gebrochene Bild in Samsung A3 und zeigt das Bild mit dem gleichen Code in Xiaomi Redmi Note 3

// Bild öffnet in einem Vollbild-Viewer

showImageInViewer (item) {

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); 
    }); 

} 

}

Das speichert die Bilddatei in der Dateiablage mit einem Pfad ähnlich ist: /storage/emulated/0/Pictures/One/media/-KYjJ_BTfQKI5gmNyl6T/-KZujwQZC6BlScebtpnn-m372.jpg

Das Bild zeigt richtig auf Xiomi Redmi N ote 3 aber öffnet nicht das gleiche Bild in Nexus und Samsung Telefon.

Bitte helfen

Antwort

1

Ich fand es heraus. Es ist der Weg des Bildes. Es muss sein: 'file: //' localpath

Noch weiß ich nicht, wie es auf Xiaomi funktioniert und nicht auf anderen Telefonen.

+1

Nun, Ihr Xiaomi läuft wahrscheinlich MIUI, die einige Dinge anders macht –

+0

Ich hoffe, dass würde nicht viel Unterschied im Verhalten anderer Android-Funktionen machen –