2016-06-28 4 views
1

내가 자바 스크립트에 base64로 이미지를 보내려고 해요. (이 X 문자를 초과하는 URL을로드 거부)하지만 난 안드로이드 Studio에서이 오류가 계속 :안드로이드 웹보기는

W/크롬 : [WARNING : navigator_impl.cc (280)] 2097152자를 초과하여 URL을로드하는 것을 거부합니다.

loadDataWithBaseURL을 사용해 보았습니다.하지만 실제로 자바 스크립트를 실행하는 방법을 알아낼 수 없으므로 솔루션인지 확실하지 않습니다.

은 일부 이미지에 대한 작동하지만 일부는 너무 크고, 그것이 나에게 그 오류 :(어떤 도움

감사를 제공, 내가 사용하는 코드입니다!

if (resultCode == RESULT_OK) 
{ 
    Uri selectedImage = intent.getData(); 
    myWebView.loadUrl("javascript:setFileUri('" + selectedImage.toString() + "')"); 
    String path = getRealPathFromURI(this, selectedImage); 
    //myWebView.loadUrl("javascript:setFilePath('" + path + "')"); 


    Bitmap bm = BitmapFactory.decodeFile(path); 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    bm.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm is the bitmap object 
    byte[] b = baos.toByteArray(); 

    String encodedImage = Base64.encodeToString(b, Base64.DEFAULT); 

    myWebView.loadUrl("javascript:setFilePath('" + encodedImage + "')"); 
} 

답변

2

하지 마십시오 당신이 이것에 대한 답을 찾았는지 안다면, 자바 스크립트에 이미지를 보내기 위해 하루 종일 똑같은 노력을하고있었습니다. 당신과 마찬가지로, loadUrl은 나에게 '2097152'오류를주었습니다. 그래서 evaluateJavascript를 사용해 보았습니다. 웹 뷰 구문 오류가 계속 발생했습니다.이 문제를 해결 한 후에 마침내 다음과 같이 작동하게되었습니다.

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

try { 
    final String retFunction = "imageReturnFunction('data:image/png;base64," + URLEncoder.encode(encoded, "UTF-8") + "');"; 

    runOnUiThread(new Runnable() { 
     public void run() { 
      webView.evaluateJavascript(retFunction, null); 
     } 
    }); 
} catch(Exception ex) { 
    ex.printStackTrace(); 
} 

필자는 제 경우에는 dataURL로 형식화해야하지만 (필요한 경우 JS 애플리케이션에서 매우 일반적 임) 코드를 조정할 수 있습니다. 희망이 도움이됩니다.

+0

공유 해 주셔서 감사합니다. 지금은이 문제를 해결할 수있는 입장이 아니지만 누구나 그것이 작동한다고 말하면 도움이됩니다. – Eric

관련 문제