Android – 如何从JavaScript运行intent

前端之家收集整理的这篇文章主要介绍了Android – 如何从JavaScript运行intent前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是 Android和Java的新手.我使用HTML / Javascript构建了一个应用程序很好的应用程序.

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

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

我怎么能这样做?

以下是我在阅读文档后到目前为止所拥有的内容

第二次更新代码

MainActivity.java

  1. public class MainActivity extends DroidGap {
  2. @Override
  3. public void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. super.setIntegerProperty( "splashscreen",R.drawable.splash );
  6. super.loadUrl("file:///android_asset/www/index.html",1000);
  7. WebView mWebView;
  8. mWebView = (WebView)findViewById(R.id.webview);
  9. mWebView.getSettings().setJavaScriptEnabled(true);
  10. mWebView.addJavascriptInterface(new JavaScriptInterface(),"Android");
  11. }
  12. }

JavaScriptInterface.java

  1. public class JavaScriptInterface {
  2.  
  3. public void doEmail(){
  4. Intent sendIntent = new Intent(Intent.ACTION_SEND);
  5. sendIntent.setType("text/html");
  6. sendIntent.putExtra(android.content.Intent.EXTRA_TEXT,"test text");
  7. sendIntent.putExtra(Intent.EXTRA_SUBJECT,"test subject");
  8. sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
  9. sendIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse("file://test co.html"));
  10. startActivity(Intent.createChooser(sendIntent,"Send email..."));
  11. }
  12. }

然后我将使用Android.doEmail()通过JavaScript引用意图.

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

我究竟做错了什么?

解决方法

  1. public class MainActivity extends DroidGap {
  2. @Override
  3. public void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. super.setIntegerProperty( "splashscreen",R.drawable.splash );
  6.  
  7. JavaScriptInterface jsi = new JavaScriptInterface(this,appView);
  8. appView.addJavascriptInterface(jsi,"Android");
  9.  
  10. super.loadUrl("file:///android_asset/www/index.html",1000);
  11. }
  12. }

  1. public class JavaScriptInterface {
  2. private WebView mAppView;
  3. private DroidGap mGap
  4.  
  5. public JavaScriptInterface (DroidGap gap,WebView view)
  6. {
  7. mAppView = view;
  8. mGap = gap;
  9. }
  10.  
  11. public void doEmail(){
  12. Intent sendIntent = new Intent(Intent.ACTION_SEND);
  13. sendIntent.setType("text/html");
  14. sendIntent.putExtra(android.content.Intent.EXTRA_TEXT,"test text");
  15. sendIntent.putExtra(Intent.EXTRA_SUBJECT,"test subject");
  16. sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
  17. sendIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse("file://test co.html"));
  18. startActivity(Intent.createChooser(sendIntent,"Send email..."));
  19. }
  20. }

猜你在找的Android相关文章