我是
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中遇到了2个错误
1.方法startActivity(Intent)未定义类型 – JavaScriptInterface
2. webview无法解析或不是字段 – MainActivity
我究竟做错了什么?
解决方法
- public class MainActivity extends DroidGap {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- super.setIntegerProperty( "splashscreen",R.drawable.splash );
- JavaScriptInterface jsi = new JavaScriptInterface(this,appView);
- appView.addJavascriptInterface(jsi,"Android");
- super.loadUrl("file:///android_asset/www/index.html",1000);
- }
- }
和
- public class JavaScriptInterface {
- private WebView mAppView;
- private DroidGap mGap
- public JavaScriptInterface (DroidGap gap,WebView view)
- {
- mAppView = view;
- mGap = gap;
- }
- 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..."));
- }
- }