2010-05-29 56 views

回答

-1

下面是用的icon.png圖像被顯示在web視圖的完整代碼。請查看放置在項目資產文件夾中的Demo.html。運行隨附的項目並讓我知道您是否有任何其他疑問。

WebViewDemo.java

import android.app.Activity; 
import android.os.Bundle; 
import android.os.Handler; 
import android.util.Log; 
import android.webkit.JsResult; 
import android.webkit.WebChromeClient; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 

/** 
* Demonstrates how to embed a WebView in your activity. Also demonstrates how 
* to have javascript in the WebView call into the activity, and how the activity 
* can invoke javascript. 
* <p> 
* In this example, clicking on the android in the WebView will result in a call into 
* the activities code in {@link DemoJavaScriptInterface#clickOnAndroid()}. This code 
* will turn around and invoke javascript using the {@link WebView#loadUrl(String)} 
* method. 
* <p> 
* Obviously all of this could have been accomplished without calling into the activity 
* and then back into javascript, but this code is intended to show how to set up the 
* code paths for this sort of communication. 
* 
*/ 
public class WebViewDemo extends Activity { 

    private static final String LOG_TAG = "WebViewDemo"; 

    private WebView mWebView; 

    private Handler mHandler = new Handler(); 

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

     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) { 
      Log.d(LOG_TAG, message); 
      result.confirm(); 
      return true; 
     } 
    } 
} 

main.xml中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
      <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="@string/intro" 
      android:padding="4dip" 
      android:textSize="16sp" 
      /> 

    <WebView 
     android:id="@+id/webview" 
     android:layout_width="fill_parent" 
     android:layout_height="0dip" 
     android:layout_weight="1" 
     /> 

</LinearLayout> 

Demo.html

<html> 
     <script language="javascript"> 
      /* This function is invoked by the activity */ 
       function wave() { 
        alert("1"); 
         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> 

的strings.xml

<resources> 
    <string name="intro">Demonstrates an embedded WebView and two-way communication between the HTML document and the hosting activity.</string> 
    <string name="app_name">WebViewDemo</string> 
</resources> 
+0

這不是一個答案。 – noah 2010-08-14 00:19:36

2

你可以試試:

android.resource:// PACKAGE_NAME/ID_NUMBER

android.resource://軟件包名稱/類型/名稱

請參閱[openAssetFileDescriptor()] [1 ]更多。

[1]:http://developer.android.com/reference/android/content/ContentResolver.html#openAssetFileDescriptor(android.net.Uri,java.lang.String中)

+0

你真正的意思是由android.resource:// package_name/id_number 和android.resource:// package_name/type/name? 我有com.xxxx.ebook作爲我的包。請解釋 – 2010-05-31 06:06:11

+0

Phooey - 我的鏈接不起作用。試試這個:http://bit.ly/cGOYY0這就是關於這個話題AFAIK的所有文檔。 – CommonsWare 2010-05-31 10:56:17

+0

感謝Mark!在這個鏈接上有一個WebViewDemo項目,它在WebView中顯示一個png圖像。你能告訴我從哪裏可以下載這個項目:http://code.google.com/p/apps-for-android/ – 2010-07-02 10:57:44

相關問題