【发布时间】:2015-11-05 08:35:38
【问题描述】:
无法在我的应用程序堆栈中启动默认短信活动。在 nexus 6 lollipop 和 android one marshmallow 中看到的问题。
我已尝试发送 ACTION_VIEW 的意图,并设置了 smsto: 和 sms 正文。
我能够启动短信应用程序。
我的应用有以下行为。
我的应用中有联系电话列表
当用户说邀请时,我想启动默认短信应用,填写到短信正文和默认短信应用应该在我的活动任务中。
按下返回时,我想关闭消息应用程序。
请看下面的参考图片 1.我的应用邀请 2. 在邀请时,发送短信
send sms, press back, check recent app list
我能够实现的目标。 我能够在 kitkat 中实现上述目标。 (默认短信应用完成) 但是,不是在棒棒糖和棉花糖中。默认短信应用进入后台。
- 启动默认短信应用并填写数据。
- 按下返回键后,消息应用程序会进入后台。
- 现在我将能够从最近的应用列表中启动短信应用,它再次使用相同的号码和正文填充收件人,这不是预期的。
问题是,应用程序是在新的活动任务中启动的。我无法在我的活动任务中获取该消息传递应用程序。如果我按回那个消息应用程序,我就可以回到我的应用程序。但是,如果我从最近的列表中选择消息应用程序,它每次都会显示短信收件人和正文填充活动。
请在下面找到代码sn-p
private void sendTextMessage(String to)
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) // At least KitKat
{
String defaultSmsPackageName = Telephony.Sms.getDefaultSmsPackage(mActivity); // Need to change the build to API 19
Logger.log_error(TAG + "sendTextMessage() above KITKAT");
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra("address", to);
sendIntent.putExtra("sms_body", "sms body");
sendIntent.putExtra(Intent.EXTRA_TEXT, "sms body");
if (defaultSmsPackageName != null)// Can be null in case that there is no default, then the user would be able to choose
// any app that support this intent.
{
sendIntent.setPackage(defaultSmsPackageName);
Logger.log_error(TAG + "sendTextMessage() defaultSmsPackageName = " + defaultSmsPackageName);
}
getContext().startActivity(sendIntent);
}
else // For early versions, do what worked for you before.
{
Intent smsIntent = new Intent(android.content.Intent.ACTION_VIEW);
Logger.log_error(TAG + "sendTextMessage() below KITKAT");
smsIntent.setType("vnd.android-dir/mms-sms");
smsIntent.putExtra("address", to);
smsIntent.putExtra("sms_body", getString(R.string.str_share_app_short_text));
startActivity(smsIntent);
}
}
这种启动方式会与消息应用程序混淆。
我尝试过启动没有历史记录、单个实例、从最近事件中排除的意图。
作为参考,我附上了我试图在我的活动中使用的 whatsapp 屏幕截图。 我无法在堆栈溢出中发布超过 2 个链接,因此仅保留最近的应用列表。
- 启动whatsapp,转到联系人,向下滚动,寻找绿色邀请 并邀请。
- 它将启动短信应用程序。
- 查看最近的。
【问题讨论】:
-
我建议您查看fabric.io/kits/android/branch 和firebase.google.com/docs/invites/android 以获得更好的跟踪。
标签: android android-intent android-5.0-lollipop google-app-invites