布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="电话号码: " />
<EditText
android:id="@+id/et_main_number"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="请输入号码"
android:phoneNumber="true">
</EditText>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="短信内容: " />
<EditText
android:id="@+id/et_main_sms"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="请输入短信">
</EditText>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<Button
android:id="@+id/btn_main_call"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="打电话" />
<Button
android:id="@+id/btn_main_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="发短信" />
</LinearLayout>
</LinearLayout>
分别实现点击和长按
点击跳转到拨打电话界面
点击跳转到编辑短信页面
长按直接打电话
长按直接发送短信
Activity类
package com.hbk.smsapp;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity implements OnClickListener, OnLongClickListener {
private EditText et_main_number;
private EditText et_main_sms;
private Button btn_main_call;
private Button btn_main_send;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化视图对象
et_main_number = (EditText) findViewById(R.id.et_main_number);
et_main_sms = (EditText) findViewById(R.id.et_main_sms);
btn_main_call = (Button) findViewById(R.id.btn_main_call);
btn_main_send = (Button) findViewById(R.id.btn_main_send);
// 点击事件
btn_main_call.setOnClickListener(this);
btn_main_send.setOnClickListener(this);
// 长按事件
btn_main_call.setOnLongClickListener(this);
btn_main_send.setOnLongClickListener(this);
}
@Override
public void onClick(View v) {
if(v==btn_main_call) {//点击打电话
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:"+et_main_number.getText().toString()));
startActivity(intent);
}else if(v==btn_main_send) {//点击发短信
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("smsto:"+et_main_number.getText().toString()));
intent.putExtra("sms_body", et_main_sms.getText().toString());
startActivity(intent);
}
}
@Override
public boolean onLongClick(View v) {
if(v==btn_main_call) {//长按打电话
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+et_main_number.getText().toString()));
startActivity(intent);
}else if(v==btn_main_send) {//长按发短信
//1). 得到SmsManager的对象
SmsManager smsManager = SmsManager.getDefault();
//2). 发送文本信息(短信)
String number = et_main_number.getText().toString();
String sms = et_main_sms.getText().toString();
smsManager.sendTextMessage(number, null, sms, null, null);
}
return true;//不会再触发点击事件(表示此事件已经被消费了)
}
}
清单文件需要加入以下权限
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.SEND_SMS" />
短信测试的时候,可以开启两个虚拟机。