在单击按钮时从Android应用程序打开gmail时,应用程序崩溃

时间:2016-11-26 09:20:53

标签: android gmail-api

我有一个ImageView按钮,可在我的Android应用中打开gmail 撰写邮件标签通过意图。 以前,相同的代码正在努力打开它。

  imageView3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent send=new Intent(Intent.ACTION_VIEW);
                send.setType("plain/text");
                send.setData(Uri.parse("testmail@gmail.com"));
                send.setClassName("com.google.android.gm", "com.google.android.gm.ComposeActivityGmail");
                startActivity(send);

            }
        });

现在点击按钮后应用程序崩溃了。

2 个答案:

答案 0 :(得分:0)

用这个代替你的代码。如果您的应用程序不再崩溃,则表示您的Android设备中没有Gmail应用程序。

imageView3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) 
           {
               try
               {
                   Intent send=new Intent(Intent.ACTION_VIEW);
                   send.setType("plain/text");
                   send.setData(Uri.parse("testmail@gmail.com"));
                   send.setClassName("com.google.android.gm", "com.google.android.gm.ComposeActivityGmail");
                   startActivity(send);
                }
                catch (ActivityNotFoundException ex)
                {
                    ex.printStackTrace();
                }

        }
    });

答案 1 :(得分:0)

最后我得到了答案,让这段代码真正忙碌

      Intent intent = new Intent(android.content.Intent.ACTION_SEND);
            intent.setType("text/html");
            final PackageManager pm = getPackageManager();
            final List<ResolveInfo> matches = pm.queryIntentActivities(intent, 0);
            ResolveInfo best = null;
            for (final ResolveInfo info : matches) {
                if (info.activityInfo.packageName.endsWith(".gm") || info.activityInfo.name.toLowerCase().contains("gmail")) {
                    best = info;
                    break;
                }
            }
            if (best != null) {
                intent.setClassName(best.activityInfo.packageName, best.activityInfo.name);
            }

            intent.setData(Uri.parse("mailto:emailto@gmail.com"));


            try {
                startActivity(intent);

            } catch (android.content.ActivityNotFoundException ex) {
                Toast.makeText(MainActivity.this, "Error Sending Email,Try Later.", Toast.LENGTH_SHORT).show();
            }