02_android入门_实现短信/彩信发送的功能

一、短息发送实现要点:

1)必须要在AndroidManifest.xml中添加发送短信权限<uses-permission android:name="android.permission.SEND_SMS" />

2)查找控件:findViewById(R.id.控件id);

3)监听按钮事件:控件.setOnClickListener(this),实现OnClickListener接口

4)获取editText里的值:getText();


二、发送短信思路:

1) 获取短信号码及内容

2) 判断短信号码及内容是否为空

3) 获取短息的管理器对象

3) 如果你的字符数大于了70自动拆分处理

4) 发送短信的处理


三、实现效果

 




                


以上 有短信和彩信的效果图

下面具体看一下短信实现的代码:

1.布局文件中所需要的字符串资源string.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">lesson02</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
    <string name="sms_tip_phone">请输入您要发送的手机号码</string>
    <string name="sms_tip_content">请输入您要发送的信息内容</string>
    <string name="tip_sms">输入短息的信息</string>
    <string name="send_sms">发送短信</string>
    <string name="error_sms_content">您发送的短信号码或者短信内容不能为空</string>
</resources>

2.布局文件 activity_sms.xml

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="${packageName}.${activityClass}">
    <!-- 提示输入电话号码信息 -->
    <TextView 
        android:id="@+id/tv_tip_phone"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/sms_tip_phone"/>
    
    <!-- 输入手机号码的信息 -->
    <EditText
        android:id="@+id/et_phone"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tv_tip_phone"
        android:layout_alignParentLeft="true"
        android:inputType="phone"/>
    
    <!-- 提示输入短信信息 -->
    <TextView 
        android:id="@+id/tv_tip_sms_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/sms_tip_content"
        android:layout_below="@+id/et_phone"/>
    
    <!-- 输入短息的信息 -->
    <EditText
        android:id="@+id/et_sms_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tv_tip_sms_content"
        android:lines="5"
        android:hint="@string/tip_sms"/>
   
    <!-- 发送信息的按钮 -->
    <Button 
        android:id="@+id/send_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/et_sms_content"
        android:text="@string/send_sms"/>

</RelativeLayout>

3.SmsActivity代码

package com.example.lesson02_sms;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class SmsActivity extends Activity implements OnClickListener{ 
	//声明控件
	private EditText et_phone;
	private EditText et_content;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		//设置显示的视图
		setContentView(R.layout.activity_sms);
		//获取控件对象
		et_phone = (EditText) findViewById(R.id.et_phone);
		et_content = (EditText) findViewById(R.id.et_sms_content);
		//获取按钮的控件对象
		Button send_btn = (Button) findViewById(R.id.send_btn);
		//注册监听事件
		send_btn.setOnClickListener(this);
	}

	/**
	 * 按钮点击事件处理的方法
	 */
	@Override
	public void onClick(View v) {
		//获取控件的id值
		 int id =  v.getId();
		 //根据id判断点击的控件
		 switch (id) {
			case R.id.send_btn:
				//获取短信号码
				 String phone =  et_phone.getText().toString();
				 //获取短信的内容
				 String content = et_content.getText().toString();
				 //判断短信号码和内容是否为空
				 if(TextUtils.isEmpty(phone)||TextUtils.isEmpty(content)){
					 //吐司效果
					 Toast.makeText(this,R.string.error_sms_content, Toast.LENGTH_SHORT).show();
				 }else{
					 //获取短息的管理器对象
					 SmsManager smsManager = SmsManager.getDefault();
					 
					 //如果你的字符数大于了70就开始拆了.
					 ArrayList<String> smscontents =  smsManager.divideMessage(content);
					 
					 //遍历发送信息
					 for(int i=0;i<smscontents.size();i++){
						 //发送短信的处理
						 smsManager.sendTextMessage(phone, null, smscontents.get(i), null, null);
					 }
					 //吐司效果
					 Toast.makeText(this, "发送信息成功", Toast.LENGTH_LONG).show();
				 }
				break;
			default:
				break;
		}
	}
}

4.项目清单文件AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.lesson02_sms"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <!-- 发送短信的权限 -->
    <uses-permission android:name="android.permission.SEND_SMS" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.lesson02_sms.SmsActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
     </application>

</manifest>


对于发彩信的实现,主要是调用系统的意图来实现的,下面贴出activity中主要实现代码:希望同学们自己实现一下.

                               //获取外部存储文件目录
				File file = Environment.getExternalStorageDirectory();//目录要通过类的方法获取
				//创建意图
				Intent intent = new Intent(Intent.ACTION_SEND);
				//创建附带数据
				intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+file.getPath()+"/DCIM/Camera/20140502_112359.jpg"));
				//发送的地址
				intent.putExtra("address", "13103120533");
				//发送主题
				intent.putExtra("subject", "it's subject");
				//发送内容
				intent.putExtra("sms_body", "it's content");
				//发送的类型
				intent.setType("image/jpeg"); 
				//执行意图
				SmsImgActivity.this.startActivity(intent);


以上代码仅供参考......

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
全面自动化,从设置到短信。*触发器:应用程序,时间,日期,位置,硬/软状态,事件,快捷方式,小工具,计时器,插件 *操作:200+内置,插件支持 *任务:循环,变量,条件 *场景:设计自己的屏幕叠加 *应用创建:创建自己的独立应用程序分享或出售!(Android 2.3+)试用版:http ://tasker.dinglisch.net/dl 入门指南:http ://tasker.dinglisch.net/guides.html 查询,问题:请参阅菜单/信息/支持in-appIt不可能修复通过Play商店评论报告的问题... ******按类别排序****** [并非所有设备上都可用的所有操作] * ALERT:Flash,通知LED /声音/振动,取消通知,弹出计时/ WithTaskIcons / Names,Torch,Vibrate,Vibrate Pattern * APP:日历插入,回家,杀死应用程序,加载应用程序,打开地图(/ StreetView / Nav) *音频:警报/呼叫/ DTMF /媒体/通知/振铃/系统音量,触觉反馈切换,麦克风静音,通知脉冲,通知(<4.1)/振铃振动(<4.2或根),静音模式,扬声器,音效切换 *对话框:28系统设置对话框 *显示:自动亮度,关闭系统对话框,键盘锁,键盘锁模​​式,显示屏亮度,显示关闭超时,显示旋转,设置壁纸,保持打开状态栏(展开/折叠) *文件:浏览文件,目录创建/删除/移动,文件复制/删除/移动/打开,写入文件,读取线,阅读段落,压缩/解压缩文件 *输入:按钮,Dpad(仅限root),类型(仅限根),输入法选择,软键盘(显示) *媒体:媒体按钮事件(抓取),媒体播放器控制,音乐文件/目录,播放/前进/后退/停止,照片/系列/时间系列,录制音频,录制音频停止,铃声,扫描卡 * MISC :(广播)动作意图,组件意图,获取位置,GPS状态(<2.3或Cyanogen / submod),运行(ASE)脚本,说,对文件,关闭,搜索,设置剪贴板,重新启动(仅限root),设置CPU( root only)设置时区 *网络:飞行模式(<4.1或root),自动同步,BT,BT ID,撰写电子邮件,浏览URL,HTTP GET,HTTP POST,移动数据(开/关),移动数据2G / 3G(仅限氰化物,USB系绳,WiFi切换,Wifi断开/重新连接/重新连接,Wifi睡眠,Wifi系绳,Wimax切换 *电话:通话,通话记录,通话阻止/转移/还原,撰写彩信/短信,通讯录,结束通话,收音机,发送短信发送数据短信,静音铃声, 接听电话*任务:更改图标集,如果,结束如果,转到操作,执行任务,配置文件切换,查询操作,设置窗口小部件图标,设置窗口小部件标签,停止,等待,等待直到 * VARIABLES:设置,清除,公司,12月,查询,随机化,拆分,加入,列表 * 3RD PARTY:Android Notifier,Astrid,BeyondPod,JuiceDefender Data / Toggle,Gentle Alarm,NewsRob,OfficeTalk,SleepBot,SMS Backup +,TeslaLED,WidgetLocker ****** States ******飞机模式,BT连接,日历条目,停靠,耳机插入,来电,键盘输出,灯光水平,媒体按钮,未接来电,移动网络,设备方向,电源,各种传感器,信号强度,未读文本,可变值,Wifi网络,Wifi近** ****事件******闹钟/完成,日期设置,时间/日期设置,时区设置,显示:关/开/解锁,文件关闭/删除/修改/移动/打开/属性更改,相机/搜索按钮长按,卡安装/卸下/未安装,手势,未接来电,电话更改,接收文本,短信发送成功/失败,电池更换/完全/低/过热,设备启动,设备关闭,存储低,区域设置改变,新增/删除/更新包,更改壁纸,单击按钮小工具,新窗口,通知,通知单击,缩放单击,可变清除/设置,K9收到电子邮件,温和警报,Kaloer时钟,OpenWatch,Reddit通知,Screebl,Widget Locker 什么是新的 添加了“通知设置”操作 Made HTTP操作返回本地%httpd变量 如果用户已选择始终拒绝权限请求,则显示一个对话框,指示用户进行设置 长按通知类别删除它,但不立即使用它 修复了Android 9设备上的Wifi Tether动作 修复了Tasker应用程序在某些情况下无法正确打开
您好,要在 Android发送彩信并监听短信,可以按照以下步骤操作: 1.发送彩信 发送彩信需要使用 MMS(Multimedia Messaging Service)协议,具体步骤如下: ```java // 创建一个 MMS 编辑器 Uri uri = Uri.parse("content://mms"); Intent intent = new Intent(Intent.ACTION_SEND, uri); intent.putExtra("sms_body", "这是彩信的正文"); intent.putExtra("address", "1234567890"); intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File("/sdcard/test.jpg"))); intent.setType("image/jpeg"); startActivity(intent); ``` 这个 Intent 会启动系统自带的彩信编辑器,用户可以在编辑器中编辑彩信的内容,包括添加图片、声音等元素。用户编辑完毕后,可以选择发送彩信,系统会将彩信发送给指定的号码。 2.监听彩信 要监听彩信,可以注册一个 ContentObserver,监听 MMS 的变化。具体步骤如下: ```java // 创建一个 ContentObserver ContentObserver observer = new ContentObserver(new Handler()) { @Override public void onChange(boolean selfChange) { super.onChange(selfChange); // 处理彩信变化 } }; // 注册 ContentObserver getContentResolver().registerContentObserver(Uri.parse("content://mms"), true, observer); ``` 这样,当有新的彩信到来时,onChange() 方法就会被调用,我们可以在其中处理彩信的内容。 3.监听短信 要监听短信,可以注册一个 BroadcastReceiver,监听短信的广播。具体步骤如下: ```java // 创建一个 BroadcastReceiver BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // 处理短信 } }; // 注册 BroadcastReceiver IntentFilter filter = new IntentFilter(); filter.addAction("android.provider.Telephony.SMS_RECEIVED"); registerReceiver(receiver, filter); ``` 这样,当有新的短信到来时,onReceive() 方法就会被调用,我们可以在其中处理短信的内容。 希望能对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值