使用Jscript调用Android函数

使用Jscript调用Android函数,android,Android,我正在创建一个应用程序中,我必须接口php页面使用android 我是android开发的新手。。。我使用中给出的代码。对于演示,使用相同的代码,我创建了一个小应用程序并在emulator上进行了尝试…但在单击“单击”按钮后,什么都没有发生…logcat也没有显示任何错误 我的应用程序内容这些文件。。。 1…mainactivity的java代码 2…html代码(保存在apache服务器中) 3.main.xml包含web视图 1---主活动代码 package com.example.pra

我正在创建一个应用程序中,我必须接口php页面使用android

我是android开发的新手。。。我使用中给出的代码。对于演示,使用相同的代码,我创建了一个小应用程序并在emulator上进行了尝试…但在单击“单击”按钮后,什么都没有发生…logcat也没有显示任何错误

我的应用程序内容这些文件。。。 1…mainactivity的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>

无标题文件

函数openAndroidDialog(){ AndroidFunction.openAndroidDialog(); }


请帮我…

不要担心小错误

换行

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

更新: 您的
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();
        }
    }
输出:

如何打开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();
    }

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

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

AndroidFunction.openAndroidDialog()

编辑:

声明称,“对于针对API级别JELLY_BEAN_MR1及以上的应用程序,只能从JavaScript访问带有JavascriptInterface注释的公共方法。”


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

在更改之前,您是否尝试使用与所述完全相同的代码使其工作?该代码中存在相同的问题,、logcat的最后一行…启动TG#0,0x2a22d308..之后没有显示任何内容…请帮助我查看我引用的代码…是的,在设备上也只显示html..单击“没有显示任何内容”之后,,,,,谢谢Biraj…终于完成了,现在很高兴…我对上下文感到困惑,,,你能详细说明为什么不在这里使用上下文…上下文不是问题。但这是没有用的@JavascriptInterface是必需的,同样的问题发生在我从这篇文章中引用的代码中没有显示对话框,,,请帮助…你好,卡卡…请参考我的问题。。。
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();
    }