views:

324

answers:

1

hello ,I used webView to show javaScript,one image was included in the javaScrip,but the webView not run the image on the contrary appear a "?"image. Idonot why? my code:

demo.html

<html>  
    <script language="javascript">  
        /* This function is invoked by the activity */   
        function wave() {   

            document.getElementById("droid").src="android_waving.png";   
            alert("2");   
        }   
    </script>  
    <body>  
        <!-- Calls into the javascript interface for the activity -->  
        <a onClick="window.demo.clickOnAndroid()"><div style="width:80px;   
            margin:0px auto;   
            padding:10px;   
            text-align:center;   
            border:2px solid #202020;" >  
                <img id="droid" src="android_normal.png"/><br>  
                Click me!   
        </div></a>  
    </body>  
</html>  
public class webJsDemo extends Activity {
    /** Called when the activity is first created. */
    private WebView mWebView;
     private Handler mHandler = new Handler();   

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mWebView = (WebView) findViewById(R.id.wv1);   

        WebSettings webSettings = mWebView.getSettings();   
        webSettings.setSavePassword(false);   
        webSettings.setSaveFormData(false);   
        webSettings.setJavaScriptEnabled(true);   
        webSettings.setSupportZoom(false);   

        mWebView.setWebChromeClient(new MyWebChromeClient());   

        mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");   

        mWebView.loadUrl("file:///android_asset/demo.html");   
    }   

    final class DemoJavaScriptInterface {   

        DemoJavaScriptInterface() {   
        }   

        /**  
         * This is not called on the UI thread. Post a runnable to invoke  
         * loadUrl on the UI thread.  
         */  
        public void clickOnAndroid() {  

            mHandler.post(new Runnable() {   
                public void run() {   
                    mWebView.loadUrl("javascript:wave()");   
                }   
            });   

        }   
    }   

    /**  
     * Provides a hook for calling "alert" from javascript. Useful for  
     * debugging your javascript.  
     */  
    final class MyWebChromeClient extends WebChromeClient {   
        @Override
        public boolean onJsAlert(WebView view, String url, String message,
                JsResult result) {
            // TODO Auto-generated method stub
            Log.d("aa", message);  
            Log.d("url", url);
            Log.d("result", ""+result);
            result.confirm(); 
        return super.onJsAlert(view, url, message, result);

        }


    }   
}  

i put android_normal.png and android_waving.png in the assets and drawable folder

the result

+1  A: 

Did you try putting your image in the same location your html file is?

JRL
that is works fine. i am sorry to waste your time because i copy image put in a wrong position.i think i have put image and html in the same folder,but i put the image in the other folder, so that i donot good checking .iam sorry.
pengwang