前言:
由于复习渣渣面试题,导致本来渣渣的技术更加渣渣,
虽然更新解析博客,算不上原创,起码比不学强,
初学者,不论收到什么打击,应该记得居安思危!
随时应战。。。。。
重回优快云,复习安卓基础部分
电话:
理论理解: 电话权限+意图+非空判断 三部分重点内容
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