Android – 如何从JavaScript运行intent

我是 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..."));
    } 
}

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...