2014-01-20 60 views
0
public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      String url = new String("file:///android_asset/Map.html"); 
      setContentView(R.layout.leaflet_map); 
      this.setTitle("Location Map"); 

      if (android.os.Build.VERSION.SDK_INT > 9) { 
       StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder() 
         .permitAll().build(); 
       StrictMode.setThreadPolicy(policy); 
      } 

      initComponent(); 

      WebSettings webSettings = myWebView.getSettings(); 
      webSettings.setJavaScriptEnabled(true); 

      webSettings.setRenderPriority(RenderPriority.HIGH); 
      webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); 

      // multi-touch zoom 
      webSettings.setBuiltInZoomControls(true); 
      /* webSettings.setDisplayZoomControls(false);*/ 
      myWebView.getSettings().setLoadsImagesAutomatically(true); 
      myWebView.setWebChromeClient(new WebChromeClient()); 
      myWebView.setWebViewClient(new WebViewClient()); 

      myWebView.loadUrl("file:///android_asset/Map.html"); 
      myWebView.addJavascriptInterface(new WebAppInterface(this), "Android"); 
      myWebView.setWebViewClient(new WebViewClient()); 
      mapTextView.setText("Hello Map!!!!"); 

     } 

     public void initComponent(){ 

      generateId(); 
      getGeoLocation(); 
    } 

在這裏,我想打電話給我的JavaScript函數:如何從我的Android活動中調用Javascript函數?

public void getGeoLocation() { 

      // creating GPS Class object 
      gps = new com.getlocation.periscope.GPSTracker(this); 

      // check if GPS location can get 
      if (gps.canGetLocation()) { 
       Log.d("Your Location", "latitude:" + gps.getLatitude() 
         + ", longitude: " + gps.getLongitude()); 
       Double latitude = gps.getLatitude(); 
       Double longitude = gps.getLongitude(); 
       try{ 
       myWebView.loadUrl("javascript:latLong('"+latitude+"','"+longitude+"')"); 
       }catch(Exception ex){ 
        Toast.makeText(this,"Exception type"+ex, Toast.LENGTH_LONG).show(); 

       } 
      } else { 
       // Can't get user's current location 
       alert.showAlertDialog(this, "GPS Status", 
         "Couldn't get location information. Please enable GPS", 
         false); 
       // stop executing code by return 
       return; 
      } 
      Toast.makeText(
        this, 
        "latitude:" + gps.getLatitude() + ", longitude: " 
          + gps.getLongitude(),Toast.LENGTH_LONG).show(); 
     } 
+0

請幫我解決這個問題。 – Ricky

+0

請在您的問題中添加更多信息,但您不清楚您的問題。另外,請正確地將您的代碼格式化爲代碼塊。 –

+0

@ Kent Hawkings先生,我想從我的活動類中調用我的JavaScript函數。 – Ricky

回答

0

我解決了這個問題之前也確保你已經在你的WebView啓動Javascript。

myWebView.setWebViewClient(new WebViewClient() { 
     public void onPageFinished(WebView view, String url) { 
      getGeoLocation(); 
     Bundle getbundle = new Bundle(); 
     String latString = getbundle.getString("latitud"); 
     String lotString = getbundle.getString("longitud"); 

      view.loadUrl("javascript:latLong("+latString+","+lotString+")"); 
     } 
    }); 
1

你想嘗試像

myWebView.loadUrl("javascript:myfunction(" + param1 + "," + param2 + ")"); 

一些地方myFunction是你的JavaScript功能和參數1和參數是您想要傳遞的元素。

剛剛加入這個代碼片斷調用任何功能

myWebView.setJavaScriptEnabled(true); 
+0

仍然無法正常工作,但感謝您的回覆。 – Ricky

+0

@ user3168029你能描述一下你的意思嗎?該功能從來沒有被稱爲?你有沒有在你的web視圖中啓用JavaScript(我用該代碼編輯了我的答案)? – MikeIsrael

+0

在活動的oncreate我啓用JavaScript,但它仍然沒有調用這個JavaScript函數,你可以看到它上面我發佈的代碼。 – Ricky

相關問題