我对Android和Java都是新手。我使用HTML/Javascript构建了一个很好的应用程序。
现在我需要创建一个活动来启动电子邮件客户端,填写主题和正文,并(难点)添加附件。我无法从JavaScript中实现此操作,mailto:
将不会添加文件。
因此,我需要通过Java完成这项任务,并从JavaScript执行它。我认为可以使用addJavaScriptInterface
来完成,但我找不到任何详细的文档或示例。
我该如何做呢?
在阅读文档后,以下是我的一些代码:
代码的第二次更新:
MainActivity.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");
}
}
JavaScriptInterface.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引用意图。
使用上述代码,我在Eclipse中遇到了两个错误: 1. 方法startActivity(Intent)未定义 - JavaScriptInterface 2. webview无法解析或不是字段 - MainActivity
我做错了什么?
JavaScriptInterface
类不应该继承Activity
。它将是一个拥有send()
方法的独立类。你的Activity
类应该完成send()
方法的第二部分(即WebView
部分)。 - nicholas.hauschild