本文实例讲述了Android编程实现短信收发及语音播报提示功能。分享给大家供大家参考,具体如下:
发送短信功能界面
/** * 发送短信Demo * * @description: * @author ldm * @date 2016-4-22 上午9:07:53 */ public class SmsActivity extends Activity implements OnClickListener { public static final String SMS_RECIPIENT_EXTRA = "com.ldm.study.SMS_RECIPIENT"; public static final String ACTION_SMS_SENT = "com.ldm.study.SMS_SENT_ACTION"; private Button sms_send_message; private EditText sms_recipient; private EditText sms_content; private CheckBox sms_enable_receiver; private TextView sms_status; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.send_sms_layout); initViews(); initListeners(); registerSmsReceiver(); } /** * 注册短信监听广播 * * @description: * @author ldm * @date 2016-4-22 上午9:23:23 */ private void registerSmsReceiver() { registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String message = null; boolean error = true; switch (getResultCode()) { case Activity.RESULT_OK: message = "发送成功!"; error = false; break; case SmsManager.RESULT_ERROR_GENERIC_FAILURE: message = "发送失败"; break; case SmsManager.RESULT_ERROR_NO_SERVICE: message = "发送失败"; break; case SmsManager.RESULT_ERROR_NULL_PDU: message = "发送失败"; break; case SmsManager.RESULT_ERROR_RADIO_OFF: message = "发送失败"; break; } sms_recipient.setEnabled(true); sms_content.setEnabled(true); sms_content.setText(""); sms_status.setText(message); sms_status.setTextColor(error ? Color.RED : Color.GREEN); } }, new IntentFilter(ACTION_SMS_SENT)); } /** * 监听事件 * * @description: * @author ldm * @date 2016-4-22 上午9:24:20 */ private void initListeners() { sms_send_message.setOnClickListener(this); // 应用Package管理器 final PackageManager pm = this.getPackageManager(); // 获取到应用中指定的组件 final ComponentName componentName = new ComponentName("com.ldm.study", "com.ldm.study.receiver.SmsMessageReceiver"); // 根据组件是否可用的状态来判断sms_enable_receiver的选中状态 sms_enable_receiver .setChecked(pm.getComponentEnabledSetting(componentName) == PackageManager.COMPONENT_ENABLED_STATE_ENABLED); // 监听sms_enable_receiver设置广播组件是否可用 sms_enable_receiver .setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // 组件状态设置 pm.setComponentEnabledSetting( componentName, isChecked ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); } }); } private void initViews() { sms_recipient = (EditText) (findViewById(R.id.sms_recipient)); sms_content = ((EditText) findViewById(R.id.sms_content)); // 是否打开短信广播接收开关 sms_enable_receiver = (CheckBox) findViewById(R.id.sms_enable_receiver); sms_send_message = (Button) findViewById(R.id.sms_send_message); sms_status = (TextView) findViewById(R.id.sms_status); if (getIntent().hasExtra(SMS_RECIPIENT_EXTRA)) { sms_recipient.setText(getIntent().getExtras().getString( SMS_RECIPIENT_EXTRA)); sms_content.requestFocus(); } } @Override public void onClick(View v) { if (v.getId() == R.id.sms_send_message) { sendSms(); } } /** * 发送短信 * * @description: * @author ldm * @date 2016-4-22 上午9:30:38 */ private void sendSms() { if (TextUtils.isEmpty(sms_recipient.getText())) { Toast.makeText(SmsActivity.this, "请输入短信接收者", Toast.LENGTH_SHORT) .show(); return; } if (TextUtils.isEmpty(sms_content.getText())) { Toast.makeText(SmsActivity.this, "请输入短信内容", Toast.LENGTH_SHORT) .show(); return; } sms_recipient.setEnabled(false); sms_content.setEnabled(false); SmsManager sms = SmsManager.getDefault(); List<String> messages = sms.divideMessage(sms_recipient.getText() .toString()); String recipient = sms_content.getText().toString(); for (String message : messages) { // 发送短信 sms.sendTextMessage(recipient, null, message, PendingIntent .getBroadcast(SmsActivity.this, 0, new Intent( ACTION_SMS_SENT), 0), null); } } }
收到短信后处理界面:
/** * 接收短信语音播报 * * @description: * @author ldm * @date 2016-4-22 上午9:34:21 */ public class SmsReceivedActivity extends Activity implements OnInitListener { private static final int DIALOG_SHOW_MESSAGE = 1; public static final String SMS_FROM_ADDRESS_EXTRA = "com.ldm.study.SMS_FROM_ADDRESS"; public static final String SMS_FROM_DISPLAY_NAME_EXTRA = "com.ldm.study.SMS_FROM_DISPLAY_NAME"; public static final String SMS_MESSAGE_EXTRA = "com.ldm.study.SMS_MESSAGE"; private TextToSpeech mTts; private String mFromDisplayName; private String mFromAddress; private String mMessage; private String mFullBodyString; @SuppressWarnings("deprecation") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 短信来电号码 mFromAddress = getIntent().getExtras() .getString(SMS_FROM_ADDRESS_EXTRA); // 来电人称呼 mFromDisplayName = getIntent().getExtras().getString( SMS_FROM_DISPLAY_NAME_EXTRA); mMessage = getIntent().getExtras().getString(SMS_MESSAGE_EXTRA); // 短信内容 mFullBodyString = String.format(getString(R.string.sms_format), mFromDisplayName, mMessage); showDialog(DIALOG_SHOW_MESSAGE); //初始化TTS mTts = new TextToSpeech(this, this); } /** * 初始化TTS服务 */ @SuppressWarnings("deprecation") public void onInit(int status) { if (status == TextToSpeech.SUCCESS) {// 成功状态 // 设置语言,TTS引擎支持 English、 French 、 German 、 Italian 和 Spanish 这5大语言 int result = mTts.setLanguage(Locale.ENGLISH); if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) { Toast.makeText(this, "TTS不可用", Toast.LENGTH_LONG).show(); } else { mTts.speak(mFullBodyString, TextToSpeech.QUEUE_ADD, null); // mTts.speak(mFullBodyString, TextToSpeech.QUEUE_ADD, null, // ""); } } else { Toast.makeText(this, "TTS初始化失败", Toast.LENGTH_LONG).show(); } } @Override protected Dialog onCreateDialog(int id) { switch (id) { case DIALOG_SHOW_MESSAGE: return new AlertDialog.Builder(this) .setIcon(android.R.drawable.ic_dialog_email) .setTitle("Message Received") .setMessage(mFullBodyString) .setPositiveButton("回复", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { // 回复短信则跳转到发送短信界面,把接收人信息带过去 Intent i = new Intent(); i.setClass(SmsReceivedActivity.this, SmsActivity.class); i.putExtra(SmsActivity.SMS_RECIPIENT_EXTRA, mFromAddress); startActivity(i); dialog.dismiss(); finish(); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { dialog.dismiss(); finish(); } }).create(); } return null; } }
短信广播
/** * 短信来信监听广播 * * @description: * @author ldm * @date 2016-4-22 上午10:07:49 */ public class MyMsmReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Bundle extras = intent.getExtras(); if (extras == null) return; // 收到的短信内容 Object[] pdus = (Object[]) extras.get("pdus"); for (int i = 0; i < pdus.length; i++) { SmsMessage message = SmsMessage.createFromPdu((byte[]) pdus[i]); String fromAddress = message.getOriginatingAddress(); String fromDisplayName = fromAddress; Uri uri; String[] projection; uri = Uri.withAppendedPath( ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(fromAddress)); projection = new String[] { ContactsContract.PhoneLookup.DISPLAY_NAME }; // 查询短信的发件人 Cursor cursor = context.getContentResolver().query(uri, projection, null, null, null); if (cursor != null) { if (cursor.moveToFirst()) fromDisplayName = cursor.getString(0); cursor.close(); } // 跳转到短信接收界面 Intent di = new Intent(); di.setClass(context, SmsReceivedActivity.class); di.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); di.putExtra(SmsReceivedActivity.SMS_FROM_ADDRESS_EXTRA, fromAddress); di.putExtra(SmsReceivedActivity.SMS_FROM_DISPLAY_NAME_EXTRA, fromDisplayName); di.putExtra(SmsReceivedActivity.SMS_MESSAGE_EXTRA, message .getMessageBody().toString()); context.startActivity(di); } } }
附:DEMO示例代码点击此处本站下载。
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android短信与电话操作技巧汇总》、《Android文件操作技巧汇总》、《Android操作json格式数据技巧总结》、《Android编程之activity操作技巧总结》、《Android开发入门与进阶教程》、《Android资源操作技巧汇总》、《Android视图View技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
本文向大家介绍Android编程实现定时发短信功能示例,包括了Android编程实现定时发短信功能示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android编程实现定时发短信功能。分享给大家供大家参考,具体如下: 第一,要实现发短信的功能,必须要用到android系统中发短信的权限,即在AndoridManifest.xml中添加如下内容 第二,使用AlarmManager来实现一
本文向大家介绍Android Studio实现发短信功能,包括了Android Studio实现发短信功能的使用技巧和注意事项,需要的朋友参考一下 首先需要在AndroidManifest注册权限 实现发短信的代码如下 修改应用程序名称去AndroidManifest中修改 以上所述是小编给大家介绍的Android Studio实现发短信功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编
本文向大家介绍Android 实现电话拦截及拦截提示音功能的开发,包括了Android 实现电话拦截及拦截提示音功能的开发的使用技巧和注意事项,需要的朋友参考一下 本文所讲的内容是在Android系统中如何写程序进行电话拦截,并发出拦截提示音提醒用户,可以说此功能还是比较实用的。 1、电话拦截 这个功能大家可能都知道了,就是利用反射原理调用ITelephony的隐藏
本文向大家介绍Android仿微信发送语音消息的功能及示例代码,包括了Android仿微信发送语音消息的功能及示例代码的使用技巧和注意事项,需要的朋友参考一下 微信的发送语音是有一个向上取消的,我们使用onTouchListener来监听手势,然后做出相应的操作就行了。 直接上代码: 定义一个ImageView,然后给它设置监听事件: 然后在清单文件中加上需要的权限就行了: 也可以在按下之后播放动
我有一个Twilio函数,每当有人呼叫某个号码时,它就会执行。我试图让功能发送一个短信。它不起作用,但我没有得到任何错误。任何帮助调试都是很好的。 另外,如果你能让我知道如何访问这个功能内的来电电话号码,我将非常感谢。提前感谢您的任何建议或见解。
本文向大家介绍Android实现发送短信功能实例详解,包括了Android实现发送短信功能实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了Android实现发送短信功能的方法。分享给大家供大家参考,具体如下: 短信和打电话一样,都是android手机的基本功能,下面以实例说明android如何实现发送短信的功能。 程序如下所示: AndroidManifest.xml如下: 收到P