Android开发案例之短信发送器

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">主原理: 调用android系统自带的SMS管理器发送短信。</span>

开发过程:

1.在string.xml定义界面文字描述:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">短信发送器</string>
	<string name="number">请输入手机号</string>
	<string name="content">请输入短信内容</string>
	<string name="button">发送</string>
	<string name="success">发送完成</string>
</resources>

2.在界面视图中使用线性布局,完成发送短信界面的绘画

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/number" />
	<EditText 
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:id="@+id/number"
	    />
	<TextView 
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:text="@string/content"
	    />
	<EditText 
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:minLines="3"
	    android:id="@+id/content"
	    />
	<Button 
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:text="@string/button"
	    android:id="@+id/button"
	    />
</LinearLayout>


3.在Activitty.java中获取到界面中的元素:

numberText = (EditText)this.findViewById(R.id.number);
contentText = (EditText)this.findViewById(R.id.content);
Button button = (Button)this.findViewById(R.id.button);
button.setOnClickListener(new ButtonClickListener());// 自定义一个监听器 <span style="font-family: Arial, Helvetica, sans-serif;">ButtonClickListener</span>

4.ButtonClickListener 监听器:

@Override
public void onClick(View view) {
	String number =numberText.getText().toString();
	String content = contentText.getText().toString();
	SmsManager manager = SmsManager.getDefault();//获取默认的短信管理器
	ArrayList<String> texts = manager.divideMessage(content);//拆分短信(超过字数限制,自动拆分)
	for(String text:texts){
		/** 
		 * 参数说明 
		 * destinationAddress:收信人的手机号码 
		 * scAddress:发信人的手机号码  
		* text:发送信息的内容  
		* sentIntent:发送是否成功的回执,用于监听短信是否发送成功。 
		* DeliveryIntent:接收是否成功的回执,用于监听短信对方是否接收成功。 
		*/ 
		manager.sendTextMessage(number, null, text, null, null);
		Toast.makeText(MainActivity.this, string.success, Toast.LENGTH_SHORT).show();
	}
}


5.完整的Activity.java代码如下:

package com.lonffy.sms;

import java.util.ArrayList;

import com.lonffy.sms.R.string;

import android.os.Bundle;
import android.app.Activity;
import android.telephony.SmsManager;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
	private EditText numberText;
	private EditText contentText;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		numberText = (EditText)this.findViewById(R.id.number);
		contentText = (EditText)this.findViewById(R.id.content);
		Button button = (Button)this.findViewById(R.id.button);
		button.setOnClickListener(new ButtonClickListener());
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
	
	private final class ButtonClickListener implements View.OnClickListener{

		@Override
		public void onClick(View view) {
			String number =numberText.getText().toString();
			String content = contentText.getText().toString();
			SmsManager manager = SmsManager.getDefault();//获取默认的短信管理器
			ArrayList<String> texts = manager.divideMessage(content);//拆分短信(超过字数限制,自动拆分)
			for(String text:texts){
				/** 
			     * 参数说明 
			     * destinationAddress:收信人的手机号码 
			     * scAddress:发信人的手机号码  
			     * text:发送信息的内容  
			     * sentIntent:发送是否成功的回执,用于监听短信是否发送成功。 
			     * DeliveryIntent:接收是否成功的回执,用于监听短信对方是否接收成功。 
			     */ 
				manager.sendTextMessage(number, null, text, null, null);
				Toast.makeText(MainActivity.this, string.success, Toast.LENGTH_SHORT).show();
			}
		}
		
	}

}


6.最后授权:

<uses-permission android:name="android.permission.SEND_SMS"/>

最后的软件界面如图:

以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值