启动短信应用程序的意图
我有一个意图的问题…我尝试启动短信应用程序…
Intent intent = new Intent(Intent.ACTION_MAIN); intent.setType("vnd.android-dir/mms-sms"); int flags = Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP; intent.setFlags(flags); intent.setData(Uri.parse("content://sms/inbox")); context.startActivity(intent);
所以,你可以看到我把太多东西放在我的意图中,但那是因为我不知道该怎么办…谢谢
要开始启动短信活动,所有你需要的是这样的:
Intent sendIntent = new Intent(Intent.ACTION_VIEW); sendIntent.setData(Uri.parse("sms:"));
你可以添加额外的东西来填充你自己的消息,像这样的
sendIntent.putExtra("sms_body", x);
然后只是意图的startActivity。
startActivity(sendIntent);
Intent smsIntent = new Intent(Intent.ACTION_VIEW); smsIntent.setType("vnd.android-dir/mms-sms"); smsIntent.putExtra("address", "12125551212"); smsIntent.putExtra("sms_body","Body of Message"); startActivity(smsIntent);
Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.setType("vnd.android-dir/mms-sms"); startActivity(intent);
这就是你所需要的。
如果android版本是Kitkat或更高,用户可以更改默认的短信应用程序。 这个方法将得到默认的短信应用程序,并启动默认的短信应用程序。
private void sendSMS() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) // At least KitKat { String defaultSmsPackageName = Telephony.Sms.getDefaultSmsPackage(this); // Need to change the build to API 19 Intent sendIntent = new Intent(Intent.ACTION_SEND); sendIntent.setType("text/plain"); sendIntent.putExtra(Intent.EXTRA_TEXT, "text"); 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); } startActivity(sendIntent); } else // For early versions, do what worked for you before. { Intent smsIntent = new Intent(android.content.Intent.ACTION_VIEW); smsIntent.setType("vnd.android-dir/mms-sms"); smsIntent.putExtra("address","phoneNumber"); smsIntent.putExtra("sms_body","message"); startActivity(smsIntent); } }
这里是打开SMS活动的代码,该活动预先填充了SMS必须发送到的电话号码。 这在仿真器以及设备上工作正常 。
Intent smsIntent = new Intent(Intent.ACTION_SENDTO); smsIntent.addCategory(Intent.CATEGORY_DEFAULT); smsIntent.setType("vnd.android-dir/mms-sms"); smsIntent.setData(Uri.parse("sms:" + phoneNumber);
如果您想从其他一些活动中启动短信撰写活动,并且还必须传送电话号码和短信文本,请使用以下代码:
Uri sms_uri = Uri.parse("smsto:+92xxxxxxxx"); Intent sms_intent = new Intent(Intent.ACTION_SENDTO, sms_uri); sms_intent.putExtra("sms_body", "Good Morning ! how r U ?"); startActivity(sms_intent);
注意:这里的sms_body
和sms_body
smsto:
是识别短信撰写活动的文本和电话号码的键,所以在这里要小心。
使用
Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); intent.setClassName("com.android.mms", "com.android.mms.ui.ConversationList");
Intent eventIntentMessage =getPackageManager() .getLaunchIntentForPackage(Telephony.Sms.getDefaultSmsPackage(getApplicationContext)); startActivity(eventIntentMessage);
我用:
Intent sendIntent = new Intent(Intent.ACTION_MAIN); sendIntent.putExtra("sms_body", "text"); sendIntent.setType("vnd.android-dir/mms-sms"); startActivity(sendIntent);
Intent sendIntent = new Intent(Intent.ACTION_SEND); //CHANGE YOUR MESSAGING ACTIVITY HERE IF REQUIRED sendIntent.setClassName("com.android.mms", "com.android.mms.ui.ComposeMessageActivity"); sendIntent.putExtra("sms_body",msgbody); sendIntent.putExtra("address",phonenumber); //FOR MMS sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/mms.png")); sendIntent.setType("image/png"); startActivity(sendIntent);
您可以打开默认的短信应用程序,并传递细节如下:
注意:如果你想发送很多号码,用“;”分隔每个号码。 内部string
String mblNumVar = "9876543210;9123456789"; Intent smsMsgAppVar = new Intent(Intent.ACTION_VIEW); smsMsgAppVar.setData(Uri.parse("sms:" + mblNumVar)); smsMsgAppVar.putExtra("sms_body", "Hello Msg Tst Txt"); startActivity(smsMsgAppVar);
|和| 使用这个function:
void openSmsMsgAppFnc(String mblNumVar, String smsMsgVar) { Intent smsMsgAppVar = new Intent(Intent.ACTION_VIEW); smsMsgAppVar.setData(Uri.parse("sms:" + mblNumVar)); smsMsgAppVar.putExtra("sms_body", smsMsgVar); startActivity(smsMsgAppVar); }
在模拟器上这个工作对我来说
Intent i = new Intent(Intent.ACTION_VIEW, Uri.fromParts("sms", number, null)); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.putExtra("sms_body", remindingReason); startActivity(i);
短信意图:
Intent intent = new Intent("android.intent.action.VIEW"); /** creates an sms uri */ Uri data = Uri.parse("sms:"); intent.setData(data);
撰写短信:
Uri smsUri = Uri.parse("tel:" + to); Intent intent = new Intent(Intent.ACTION_VIEW, smsUri); intent.putExtra("address", to); intent.putExtra("sms_body", message); intent.setType("vnd.android-dir/mms-sms"); startActivity(intent);
try { Intent smsIntent = new Intent(Intent.ACTION_VIEW); smsIntent.setData(Uri.parse("smsto:" + Uri.encode(number))); smsIntent.putExtra("address", number); smsIntent.putExtra("sms_body", message); PackageManager pm = activity.getPackageManager(); List<ResolveInfo> resInfo = pm.queryIntentActivities(smsIntent, 0); for (int i = 0; i < resInfo.size(); i++) { ResolveInfo ri = resInfo.get(i); String packageName = ri.activityInfo.packageName; if (packageName.contains("sms")) { //Log.d("TAG", packageName + " : " + ri.activityInfo.name); smsIntent.setComponent(new ComponentName(packageName, ri.activityInfo.name)); } } activity.startActivity(smsIntent); } catch (Exception e) { // Handle Error }
这样做的最好方法。
下面的代码在Android 6.0上工作。
它将在默认消息应用程序中打开search活动,并提供与特定string相关的对话。
Intent smsIntent = new Intent(Intent.ACTION_MAIN); smsIntent.addCategory(Intent.CATEGORY_LAUNCHER); smsIntent.setClassName("com.android.mms", "com.android.mms.ui.SearchActivity"); smsIntent.putExtra("intent_extra_data_key", "string_to_search_for"); startActivity(smsIntent);
您可以以意向开始search活动。 这将打开默认消息应用程序的search活动。 现在,要显示search活动中特定对话的列表,可以使用键as将searchstring提供为额外string
“intent_extra_data_key”
正如这个类的onCreate所示
String searchStringParameter = getIntent().getStringExtra(SearchManager.QUERY); if (searchStringParameter == null) { searchStringParameter = getIntent().getStringExtra("intent_extra_data_key" /*SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA*/); } final String searchString = searchStringParameter != null ? searchStringParameter.trim() : searchStringParameter;
您还可以将sms的SENDER_ADDRESS作为string额外传递,这将列出所有具有该特定发件人地址的会话。
查看com.android.mms.ui.SearchActivity获取更多信息
你也可以检查这个答案
与默认的短信应用程序的最佳代码是。
Uri SMS_URI = Uri.parse("smsto:+92324502****"); //Replace the phone number Intent sms = new Intent(Intent.ACTION_VIEW,SMS_URI); sms.putExtra("sms_body","This is test message"); //Replace the message witha a vairable startActivity(sms);
- 为什么不是任何Maven仓库中的Android SDK Jars?
- Android在WebView中调用JavaScript函数
- 如何使用工具:build.gradle文件中的overrideLibrary?
- 如何parsing嵌套的JSON结果中的dynamicJSON键?
- 如何从Android调用RESTful Web服务?
- 如何使用InputFilter限制Android中的EditText中的字符?
- 需要处理未捕获的exception并发送日志文件
- Android Studio – 我在哪里可以看到debuggingAndroid应用程序时的调用堆栈?
- 如何使用它自己的操作button来closures小吃店?