使用Jscript调用Android功能

时间:2014-07-14 07:55:55

标签: android

我正在创建一个应用程序,我必须使用android ...

界面php页面

我是android dev中的新手...我使用http://android-er.blogspot.in中给出的代码...使用相同的代码进行演示我创建了一个小应用程序并试用了模拟器...但是点击后单击按钮没有什么是发生...也是logcat没有显示任何错误...

我的应用内容这些文件... 1 ...主要活动的java代码
2 .... html代码(保存在apache服务器中) 3 ... main.xml包含Web视图

1 ---主要活动代码..

package com.example.prac_jscript;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.webkit.WebView;

public class MainActivity extends Activity {

    WebView mybrowser;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    mybrowser =(WebView)findViewById(R.id.webView1) ;

    mybrowser.addJavascriptInterface(new MyjavaScriptInterface(this), "AndroidFUNCTION");

     mybrowser.getSettings().setJavaScriptEnabled(true);

     mybrowser.loadUrl("http://192.168.1.3/copy.html");
    }


    public class MyjavaScriptInterface{


        Context mContext;
        public MyjavaScriptInterface(Context c) {
            // TODO Auto-generated constructor stub

             mContext = c;
        }

        public void openAndroidDialog(){
             AlertDialog.Builder myDialog
             = new AlertDialog.Builder(MainActivity.this);
             myDialog.setTitle("DANGER!");
             myDialog.setMessage("You can do what you want!");
             myDialog.setPositiveButton("ON", null);
             myDialog.show();
            }
    }

}

2 - html文件的代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>
    <label>
    <input type="submit" value="Copy" onClick="openAndroidDialog()"/>
<script type="text/javascript">
 function openAndroidDialog() {
     AndroidFunction.openAndroidDialog();
 }
</script>

    </label>
  </p>

</body>
</html>

请帮帮我......

2 个答案:

答案 0 :(得分:0)

不要担心小错误

更改此行

mybrowser.addJavascriptInterface(new MyjavaScriptInterface(), "AndroidFUNCTION");

mybrowser.addJavascriptInterface(new MyjavaScriptInterface(), "AndroidFunction");

UPDATE:

您的JavascriptInterface应该喜欢这个

 public class MyjavaScriptInterface{



        MyjavaScriptInterface() {

        }

        @JavascriptInterface
        public void openAndroidDialog(){
            AlertDialog.Builder myDialog
                    = new AlertDialog.Builder(MainActivity.this);
            myDialog.setTitle("DANGER!");
            myDialog.setMessage("You can do what you want!");
            myDialog.setPositiveButton("ON", null);
            myDialog.show();
        }
    }

<强>输出:

enter image description here

如何打开watsapp?

Intent waIntent = new Intent(Intent.ACTION_SEND);
    waIntent.setType("text/plain");
            String text = "YOUR TEXT HERE";
    waIntent.setPackage("com.whatsapp");
    if (waIntent != null) {
        waIntent.putExtra(Intent.EXTRA_TEXT, text);//
        startActivity(Intent.createChooser(waIntent, "Share with"));
    } else {
        Toast.makeText(this, "WhatsApp not Installed", Toast.LENGTH_SHORT)
                .show();
    }

答案 1 :(得分:0)

接口名称区分大小写。这两个不匹配:

mybrowser.addJavascriptInterface(新的MyjavaScriptInterface(this),“ AndroidFUNCTION ”);

<强> AndroidFunction .openAndroidDialog();

编辑:

API表示“对于针对API级别JELLY_BEAN_MR1及更高版本的应用程序,只能使用JavascriptInterface注释的公共方法。

它还声明交互发生在后台线程上,因此使用runOnUiThread在主线程上发布任何ui内容。