Android学习系列(二): 短信发送器

我们在"Android学习系列(一)-电话拨号器中"继续”短信发送器“的学习,具体思路如下:

(1)在"main.xml"布局文件中,增加"发送短信"的按钮,在对应的class文件中,监听按钮点击事件,让其进入 发送短信 Activity;

(2)新建”message.xml“布局文件,布局包括输入号码和短信内容的输入框,以及”发送短信“的点击按钮;

(3)创建"Activity_Message.class",实现View.OnClickListener接口,监听 message.xml ”发送短信“按钮点击事件,利用SmsManger类实现短信的发送。

(4)在"AndroidManifest.xml"配置文件中声明 Activity_Message 以及允许使用 SEND_SMS的权限。

具体代码实现如下:

(1)在”main.xml“中增加”发送短信“的按钮

<Button
            android:id="@+id/bt_message_main"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/bt_message_text"/>

注意要在”string.xml“中声明 bt_message_text 变量

<string name="bt_message_text">发送短信</string>
(2)在”Activity_Main.class“中监听该按钮的点击事件,在onCreate方法中创建监听事件(注意该类已经实现View.OnClickListener接口) ,在重写的接口方法”onClick“中切换到发送短信的Activity中。

package com.android.dail;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Activity_Main extends Activity implements View.OnClickListener {
    private EditText et_number; //输入框View
    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        //文本框view
        et_number = (EditText) this.findViewById(R.id.et_number);
        //按钮View
        Button bt_number = (Button) this.findViewById(R.id.bt_number);

        //点击事件实现方法(3)当前类自己实现点击事件接口,重写接口onClick方法,根据Button的id,执行不同Button点击事件
        bt_number.setOnClickListener(this);

        //发送短信按钮
        Button btMessageMain = (Button) this.findViewById(R.id.bt_message_main);
        btMessageMain.setOnClickListener(this);
    }

    /**
     * 点击事件实现方法(3)当前类自己实现点击事件接口,重写接口onClick方法,根据Button的id,执行不同Button点击事件
     * @param v
     */
    @Override
    public void onClick(View v){
        switch (v.getId()){
            case R.id.bt_number:
                this.callPhone();
                break;
            case R.id.bt_message_main:

                Intent intent = new Intent();
                intent.setClass(Activity_Main.this, Activity_Message.class);

                this.startActivity(intent);

                break;
            default:
                break;
        }
    }

    /**
     * 拨打电话
     * 获取号码输入框的号码,如果电话为空,弹出提示
     * 使用Intent机制来进行电话拨打
     */
    public void callPhone(){

        String number = et_number.getText().toString().trim();
        if(TextUtils.isEmpty(number)){
            Toast.makeText(Activity_Main.this, "号码不能为空", Toast.LENGTH_SHORT).show();
            return;
        }

        Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+number));
        startActivity(intent);
    }
}

(3)新建”message.xml“布局文件,布局包括输入号码和短信内容的输入框,以及”发送短信“的点击按钮

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/et_number_text"/>
    <EditText
            android:id="@+id/et_number_message"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="phone"
            android:singleLine="true"/>
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/et_message_text"
            android:textColor="#ff0000"/>
    <EditText
            android:id="@+id/et_content_message"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:lines="5"/>
    <Button
            android:id="@+id/bt_send_message"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/bt_message_text"/>

</LinearLayout>
在”string.xml“中声明 相应的变量

<string name="et_number_text">电话号码</string>
<string name="et_message_text">短信内容</string>
(4)创建"Activity_Message.class",实现View.OnClickListener接口,监听 message.xml ”发送短信“按钮点击事件,利用SmsManger类实现短信的发送。

package com.android.dail;

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

import java.util.ArrayList;

/**
 * Created by nancy on 15-9-10.
 */
public class Activity_Message extends Activity implements View.OnClickListener {

    private EditText etNumberMessage;
    private EditText etContentMessage;

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.message);

        etNumberMessage = (EditText)this.findViewById(R.id.et_number_message);
        etContentMessage = (EditText) this.findViewById(R.id.et_content_message);

        Button btSendMessage = (Button) this.findViewById(R.id.bt_send_message);
        btSendMessage.setOnClickListener(this);//发送短信监听按钮
    }

    @Override
    public void onClick(View v){
        switch (v.getId()){
            case R.id.bt_send_message:
                this.sendMessage();
                break;
            default:
                break;
        }
    }

    /**
     * 发送短信
     */
    public void sendMessage(){
        String number = etNumberMessage.getText().toString().trim();
        String content = etContentMessage.getText().toString().trim();

        if(TextUtils.isEmpty(number) || TextUtils.isEmpty(content)){
            Toast.makeText(this, "电话号码和短信信息不能为空", Toast.LENGTH_SHORT).show();
            return;
        }

        SmsManager smsManager = SmsManager.getDefault();
        //发送的内容只能有156字节,需要将短信内容截取,重复发送
        ArrayList<String> contents = smsManager.divideMessage(content);
        for (String divideContent : contents){
            smsManager.sendTextMessage(number,null,divideContent,null,null);
        }

    }
}

(5)在"AndroidManifest.xml"配置文件中声明 Activity_Message 以及允许使用 SEND_SMS的权限。

在application标签中增加 Activity_Message声明

<pre name="code" class="html"><span style="font-size:12px;">  <activity android:name="Activity_Message"
                  android:label="@string/app_name">
        </activity></span>
增加SEND_SMS权限
<span style="font-size:12px;"><uses-permission android:name="android.permission.SEND_SMS" /></span>
(6)测试。在AVD Manager打开另外一个虚拟器,测试发送到另外一个虚拟器是否可以发送



 






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值