Android 意图检查/查看电子邮件

ada*_*rsh 2 android android-intent

我正在寻找一种方法从我的应用程序启动设备上的电子邮件应用程序来检查电子邮件。注意:我不想“发送”任何电子邮件,只想“检查”电子邮件。以下代码会导致 Gmail 应用程序崩溃 -

\n\n
          Intent intent = new Intent(Intent.ACTION_VIEW);\n          intent.setType("message/rfc822");\n          startActivity(intent);\n
Run Code Online (Sandbox Code Playgroud)\n\n

堆栈跟踪是 -

\n\n
06-06 23:26:20.313 27703-27731/? E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1\n                                                   Process: com.google.android.gm, PID: 27703\n                                                   java.lang.RuntimeException: An error occurred while executing doInBackground()\n                                                       at android.os.AsyncTask$3.done(AsyncTask.java:309)\n                                                       at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)\n                                                       at java.util.concurrent.FutureTask.setException(FutureTask.java:223)\n                                                       at java.util.concurrent.FutureTask.run(FutureTask.java:242)\n                                                       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)\n                                                       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)\n                                                       at java.lang.Thread.run(Thread.java:818)\n                                                    Caused by: java.lang.NullPointerException: uri\n                                                       at com.android.internal.util.Preconditions.checkNotNull(Preconditions.java:60)\n                                                       at android.content.ContentResolver.openInputStream(ContentResolver.java:645)\n                                                       at clk.a(SourceFile:8)\n                                                       at clk.loadInBackground(SourceFile:74)\n                                                       at android.content.AsyncTaskLoader.onLoadInBackground(AsyncTaskLoader.java:312)\n                                                       at android.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:69)\n                                                       at android.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:66)\n                                                       at android.os.AsyncTask$2.call(AsyncTask.java:295)\n                                                       at java.util.concurrent.FutureTask.run(FutureTask.java:237)\n                                                       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)\xc2\xa0\n                                                       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)\xc2\xa0\n                                                       at java.lang.Thread.run(Thread.java:818)\xc2\xa0\n
Run Code Online (Sandbox Code Playgroud)\n\n

有没有办法仅仅为了检查电子邮件而启动电子邮件应用程序?

\n

gui*_*vao 6

您可以使用Intent类中的makeMainSelectorActivity方法来执行此操作。

Intent intent = Intent.makeMainSelectorActivity(
                     Intent.ACTION_MAIN,
                     Intent.CATEGORY_APP_EMAIL);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(Intent.createChooser(intent, "Email"));
Run Code Online (Sandbox Code Playgroud)

意图makeMainSelectorActivity(字符串选择器操作,字符串选择器类别)

为应用程序的主要活动创建一个 Intent,无需指定要运行的特定活动,而是提供一个选择器来查找该活动。这会产生一个最终 Intent,其结构与从主页启动应用程序时相同。对于任何其他想要以相同方式启动应用程序的应用程序,重要的是他们使用以相同方式构建的 Intent,并且可以使用此函数来确保这种情况。

CATEGORY_APP_EMAIL