在没有消息的情况下启动默认 SMS 应用程序
Launch default SMS app without a message
我希望我的应用程序在单击按钮时启动用户的默认短信应用程序。目的不是让用户发送消息,而是查看他们当前的文本对话,因此我不希望它启动 SMS 应用程序的 "New Message" activity 而是主应用程序的 activity本身。
如果我执行以下操作:
Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.setData(Uri.parse("sms:"));
context.startActivity(sendIntent);
然后这是启动,而不是我希望它启动应用程序的主要部分,而不是这个新消息屏幕:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setType("vnd.android-dir/mms-sms");
startActivity(intent);
这可能就是您想要的。
String defaultApplication = Settings.Secure.getString(getContentResolver(), "sms_default_application");
PackageManager pm = getPackageManager();
Intent intent = pm.getLaunchIntentForPackage(defaultApplication );
if (intent != null) {
startActivity(intent);
}
经过长时间的搜索,这就是我最终使用的:
String defaultSmsPackage = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT
? Telephony.Sms.getDefaultSmsPackage(this)
: Settings.Secure.getString(getContentResolver(), "sms_default_application");
Intent smsIntent = getPackageManager().getLaunchIntentForPackage(defaultSmsPackage);
if (smsIntent == null) {
smsIntent = new Intent(Intent.ACTION_MAIN);
smsIntent.addCategory(Intent.CATEGORY_DEFAULT);
smsIntent.setType("vnd.android-dir/mms-sms");
}
try {
startActivity(smsIntent);
} catch (Exception e) {
Log.w(TAG, "Could not open SMS app", e);
// Inform user
Toast.makeText(
this,
"Your SMS app could not be opened. Please open it manually.",
Toast.LENGTH_LONG
).show();
}
支持KitKat及以上版本。在此之下,它仅支持接受 vnd.android-dir/mms-sms
意图的应用程序。如果无法打开应用程序,应通知用户。
试试这个:
String number = "12346556"; // The number on which you want to send SMS
startActivity(new Intent(Intent.ACTION_VIEW, Uri.fromParts("sms", number, null)));
我希望我的应用程序在单击按钮时启动用户的默认短信应用程序。目的不是让用户发送消息,而是查看他们当前的文本对话,因此我不希望它启动 SMS 应用程序的 "New Message" activity 而是主应用程序的 activity本身。
如果我执行以下操作:
Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.setData(Uri.parse("sms:"));
context.startActivity(sendIntent);
然后这是启动,而不是我希望它启动应用程序的主要部分,而不是这个新消息屏幕:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setType("vnd.android-dir/mms-sms");
startActivity(intent);
这可能就是您想要的。
String defaultApplication = Settings.Secure.getString(getContentResolver(), "sms_default_application");
PackageManager pm = getPackageManager();
Intent intent = pm.getLaunchIntentForPackage(defaultApplication );
if (intent != null) {
startActivity(intent);
}
经过长时间的搜索,这就是我最终使用的:
String defaultSmsPackage = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT
? Telephony.Sms.getDefaultSmsPackage(this)
: Settings.Secure.getString(getContentResolver(), "sms_default_application");
Intent smsIntent = getPackageManager().getLaunchIntentForPackage(defaultSmsPackage);
if (smsIntent == null) {
smsIntent = new Intent(Intent.ACTION_MAIN);
smsIntent.addCategory(Intent.CATEGORY_DEFAULT);
smsIntent.setType("vnd.android-dir/mms-sms");
}
try {
startActivity(smsIntent);
} catch (Exception e) {
Log.w(TAG, "Could not open SMS app", e);
// Inform user
Toast.makeText(
this,
"Your SMS app could not be opened. Please open it manually.",
Toast.LENGTH_LONG
).show();
}
支持KitKat及以上版本。在此之下,它仅支持接受 vnd.android-dir/mms-sms
意图的应用程序。如果无法打开应用程序,应通知用户。
试试这个:
String number = "12346556"; // The number on which you want to send SMS
startActivity(new Intent(Intent.ACTION_VIEW, Uri.fromParts("sms", number, null)));