java - Android - 如何从 JavaScript 运行 Intent

标签 java javascript android email webview

我是 Android 和 Java 的新手。我使用 HTML/Javascript 构建了一个运行良好的应用程序。

我现在需要创建一个 Activity 来启动电子邮件客户端、填写主题和正文,以及(困难的部分)添加文件附件。我无法从 JavaScript 中执行此操作,mailto: 不会附加文件。

因此我需要通过 Java 完成此操作并从 JavaScript 执行它。我认为这可以通过使用 addJavaScriptInterface 来完成,但我找不到任何详细的文档或示例。

我该怎么做?

这是我阅读文档后到目前为止的内容:

第二次更新代码:

主 Activity .java

public class MainActivity extends DroidGap {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.setIntegerProperty( "splashscreen", R.drawable.splash );
    super.loadUrl("file:///android_asset/www/index.html", 1000);
    WebView mWebView;
    mWebView = (WebView)findViewById(R.id.webview);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.addJavascriptInterface(new JavaScriptInterface(), "Android"); 
}
}

JavaScript接口(interface).java

public class JavaScriptInterface {

public void doEmail(){
    Intent sendIntent = new Intent(Intent.ACTION_SEND);
    sendIntent.setType("text/html");
    sendIntent.putExtra(android.content.Intent.EXTRA_TEXT,"test text");
    sendIntent.putExtra(Intent.EXTRA_SUBJECT,"test subject");
    sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    sendIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse("file://test co.html"));
    startActivity(Intent.createChooser(sendIntent, "Send email..."));
    } 
}

然后我会使用 Android.doEmail() 通过 JavaScript 引用 Intent 。

使用上面的代码,我在 Eclipse 中遇到了 2 个错误 1. 方法 startActivity(Intent) 未定义类型 - JavaScriptInterface 2. webview无法解析或不是字段-MainActivity

我做错了什么?

最佳答案

This documentation告诉你具体怎么做。

看起来主要有三个步骤:

  1. 在 Android 中创建您的“接口(interface)”类
  2. 将此“接口(interface)”的实例添加到您正在使用的 WebView
  3. 从您的 JavaScript 调用接口(interface)。

关于java - Android - 如何从 JavaScript 运行 Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7233684/

相关文章:

java - 从 Java 应用程序创建带有下标的 Graphviz 标签

java - 没有从我的自定义 Cordova 插件 (Android) 获取回调

php - 将新条件添加到 header if 语句中 - 如果 URI 是某个页面,则不显示在网站上其他任何地方显示的代码

java - Android 应用程序无法在 Eclipse 中的设备上启动

java - 在 mysql 上关闭连接后不允许进行任何操作

java - 将路径+参数添加到响应字段

javascript - 如何使用 JavaScript 创建文档对象

javascript - 方法未在 backbone.js + coffeescript 上定义

java - Android 数据绑定(bind) NoSuchMethodError

Android 在 GooglePlayServices(游戏)连接上崩溃