Я использовал код Intent для отправки электронной почты, я смог отправить письмо успешно, но моя проблема в том, что если пользователь щелкнет приложение Gmail и откроет папку «Входящие», щелкните по электронной почте и нажмите клавишу «Домой», затем откройте свое приложение и нажмитеКнопка «Электронная почта» открывает папку «Входящие», а не страницу создания (т. Е. Она переходит к любому последнему просмотру в Gmail, к которому относятся сообщения, либо к входящей почте, либо к цепочке сообщений, либо даже к черновику сообщения) поэтому я планировал убить фоновый процесс Gmail, но Mr.Commonsware упомянул в своем ответе, что мы не можем убить другое приложение из нашего приложения, поэтому я пытаюсь убить фоновый процесс и перезапуститьпакет все мои усилия были напрасны.
Вот мой код отправки электронной почты
public static ComponentName name = null;
name = new ComponentName(
"com.android.email",
"com.android.email.activity.MessageCompose");
Intent intent = new Intent(Intent.ACTION_SEND);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
intent.setComponent(name);
intent.setType("application/octet-stream");
intent.putExtra(Intent.EXTRA_EMAIL,
new String[] { " " });
intent.putExtra(Intent.EXTRA_SUBJECT, "Test");
intent.putExtra(
Intent.EXTRA_TEXT,
Html.fromHtml("<b> test Message</b>"));
intent.putExtra(Intent.EXTRA_STREAM,
Uri.parse("file:///" + "sdcard/download/" + imgfilename));
startActivity(intent);
вот мой код restartPackage
ActivityManager aM = (ActivityManager);
getApplicationContext().getSystemService(getApplicationContext().ACTIVITY_SERVICE);
aM.restartPackage("com.android.email");
Вот мой процесс Kill BackGroundКод
ActivityManager aM = (ActivityManager)
getApplicationContext().getSystemService(Catalogue.content_holder.getApplicationContext().ACTIVITY_SERVICE);
aM.killBackgroundProcesses("com.android.email");
Вот мой код, который выбирает все запущенные приложения и проверяет, запущено ли приложение электронной почты или нет, если оно работаетзатем убить этот процесс
ActivityManager manager = (ActivityManager); getApplicationContext.getSystemService(getApplicationContext.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> activityes = ((ActivityManager) manager).getRunningAppProcesses();
for (int iCnt = 0; iCnt < activityes.size(); iCnt++){
System.out.println("APP: "+iCnt +" "+ activityes.get(iCnt).processName);
if (activityes.get(iCnt).processName.contains("com.android.email")){
android.os.Process.sendSignal(activityes.get(iCnt).pid, android.os.Process.SIGNAL_KILL);
android.os.Process.killProcess(activityes.get(i).pid);
//manager.killBackgroundProcesses("com.android.email");
//manager.restartPackage("com.android.email");
System.out.println("Inside if");
}
}