一、程序运行效果图:
二、代码实现
1、main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/tv_phonenum"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="请输入号码"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="拨打号吗"
android:onClick="call" ----》注意这是第一种处理方式:即在按钮中加一个onClick属性
/>
</LinearLayout>
2、MainActivity
1)点击事件的第一种处理方式:给button或其他空间加上onClick属性。(PS:这种处理方式主要体现在XML文件的书写上)
package com.njupt.phonetest;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView tv_phonenum;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv_phonenum = (TextView) findViewById(R.id.tv_phonenum);
}
public void call(View v){
String phone_num = tv_phonenum.getText().toString();
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + phone_num));
startActivity(intent);
}
@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;
}
}
2)定义一个内部类实现OnClickListener接口
public class MainActivity1 extends Activity {
private EditText numET; // 由于多个方法使用, 定义为成员变量
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
numET = (EditText) findViewById(R.id.numET); // 找到文本框
Button callBT = (Button) findViewById(R.id.callBT); // 找到按钮对象
callBT.setOnClickListener(new MyOnClickListener()); // 添加监听器
}
private class MyOnClickListener implements OnClickListener { //定义监听器类, 实现OnClickListener
public void onClick(View v) { // 定义事件对应的处理方法
String num = numET.getText().toString(); // 获取其中号码
Intent intent = new Intent(); // 创建意图对象
intent.setAction(Intent.ACTION_CALL); // 设置意图的动作(拨打电话)
intent.setData(Uri.parse("tel:" + num)); // 设置意图的数据(电话号码)
startActivity(intent); // 使用意图开启一个界面(拨打电话的界面)
}
}
}
3)MainAcitivity实现OnClickListener接口
public class MainActivity2 extends Activity implements OnClickListener {// 当前类即是一个Activity, 也是一个OnClickListener
private EditText numET; // 由于多个方法使用, 定义为成员变量
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
numET = (EditText) findViewById(R.id.numET); // 找到文本框
Button callBT = (Button) findViewById(R.id.callBT); // 找到按钮对象
callBT.setOnClickListener(this); // 把当前对象作为监听器, 添加到Button上
}
public void onClick(View v) { // 定义事件对应的处理方法
String num = numET.getText().toString(); // 获取其中号码
Intent intent = new Intent(); // 创建意图对象
intent.setAction(Intent.ACTION_CALL); // 设置意图的动作(拨打电话)
intent.setData(Uri.parse("tel:" + num)); // 设置意图的数据(电话号码)
startActivity(intent); // 使用意图开启一个界面(拨打电话的界面)
}
}
3、AndroidManifest.xml
在这里加上权限打电话的权限:<uses-permission android:name="android.permission.CALL_PHONE"/>
源码下载: