安卓基础案例 电话+短信

前言:
由于复习渣渣面试题,导致本来渣渣的技术更加渣渣,
虽然更新解析博客,算不上原创,起码比不学强,
初学者,不论收到什么打击,应该记得居安思危!
随时应战。。。。。

重回CSDN,复习安卓基础部分

电话:
理论理解: 电话权限+意图+非空判断 三部分重点内容
TextUtils.isEmpty(String str); ————–ava提供的非空判断
inputType=”phone” ———————- xml中 限制输入框内容(同时输入法自动调整)
XML

<LinearLayout 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" android:orientation="vertical">

 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="文本控件"/>

 <!-- 限制输入类型为电话号码 (数值)-->
 <EditText android:id="@+id/edit1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="请输入手机号码" android:inputType="phone"/>

 <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="拨打按钮" />
</LinearLayout>

java代码

package com.example.app1;

import org.w3c.dom.Text;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
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 MainActivity extends Activity implements OnClickListener {
    public Button button1;                     // 按钮
    public EditText edit1;                     // 输入框
    public String phone;                      // 全局常量

    @Override
    protected void onCreate(Bundle savednstanceState) {
        super.onCreate(savednstanceState);
        setContentView(R.layout.activity_main);

        edit1 = (EditText) findViewById(R.id.edit1);                  // 得到 输入框控件
        button1 = (Button) findViewById(R.id.button1);                // 得到 点击按钮控件
        button1.setOnClickListener(this);                             // 设置 按钮点击事件
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.button1:
            phone = edit1.getText().toString();                                    // 得到输入框数据

                                                                                   // 【非空判断】
            if (TextUtils.isEmpty(phone)) {
                Toast.makeText(MainActivity.this, "输入内容为空", 1).show();
            }

            Intent intent = new Intent(Intent.ACTION_CALL);                         // 设置电话意图
            intent.setData(Uri.parse("tel:" + phone));                              // 传入电话号码
            startActivity(intent);                                                  // 启动意图
            break;
        }
    }
}

权限

<!-- 电话权限 -->
        <uses-permission android:name="android.permission.CALL_PHONE"/>

短信:

短信可能要考虑一个元素,短信字符限制,
通常:中文70,英文170
所以要对短信内容进行拆分,
拆分功能对部分手机可能出bug,

测试环境: 魅蓝note2 运行安卓5.0,拆分出错,发送超70字竟然也可以,
测试环境: 小米4 运行安卓4.4.2, 分割成功,
究竟系统还是版本原因暂时未知

看代码:

package com.example.app2;

import java.util.ArrayList;

import android.os.Bundle;
import android.app.Activity;
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 MainActivity extends Activity implements OnClickListener {
  private EditText edit1,edit2;                                                 //电话输入框,内容输入框
  private Button button1;                                                       //点击按钮
  private String name1,name2;                                                  //电话号码,短信内容
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        edit1=(EditText) findViewById(R.id.edit1);                         //得到 电话输入控件
        edit2=(EditText) findViewById(R.id.edit2);                         //得到 短信输入控件
        button1=(Button) findViewById(R.id.button1);                        //得到 点击按钮控件
        button1.setOnClickListener(this);                                   //设置点按钮击事件

    }
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.button1:
            name1=edit1.getText().toString();                            //得到 电话号码文本
            name2=edit2.getText().toString();                            //得到 短信内容文本

            if(TextUtils.isEmpty(name1)||TextUtils.isEmpty(name2)){                  //【号码和内容的非空判断】
                Toast.makeText(MainActivity.this, "输入信息不能为空", 1).show(); 
                return;
            }else{
                  SmsManager manager=SmsManager.getDefault();                            //短信管理器
                  ArrayList<String> name22= manager.divideMessage(name2);                //短信内容划分为数组

                  for(String str : name22){                                          //【高级for循环遍历数组】
                      manager.sendTextMessage(name1, null,str , null, null);             //发送短信
                      //参数,1.电话号码,2自定义电话号码,3短信内容,4发送状态,5接受状态
                       // 由于中国运营商不允许改变发送号码,2.为null,后者4,5以后可以自己研究
                  }
                  }
                 break;
        }




    }

    }

分析: 短信拆分数组,高级for循环遍历数组发送
权限

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

总结:
电话+短信
很常见,难度不大,注意小细节部分
比如: 类型限制 非空判断 短信长度超范围 等等
养成一个良好的代码习惯
黑马15,
2016 1月31号凌晨1:51

你可能感兴趣的:(安卓电话+短信)