温馨提示:如果觉得文字或者代码过小,请按住ctrl+鼠标滑轮滚动,调整浏览器的显示比例。
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/insert_number" />
<EditText
android:id="@+id/numET"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="phone" />
<Button
android:id="@+id/callBT"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick" //使用MainActivity3加上此代码,前面两个不使用
android:text="@string/call" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Phone</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string name="insert_number">请输入电话号码</string>
<string name="call">呼叫此号码</string>
</resources>
package com.zwj.phone;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
private EditText numET; // 由于多个方法使用, 定义为成员变量
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_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); // 使用意图开启一个界面(拨打电话的界面)
}
}
}
MainActivity2.java 第二种触发事件的写法
package com.zwj.phone;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity2 extends Activity implements OnClickListener { // 当前类即是一个Activity, 也是一个OnClickListener
private EditText numET; // 由于多个方法使用, 定义为成员变量
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_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); // 使用意图开启一个界面(拨打电话的界面)
}
}
package com.zwj.phone;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
public class MainActivity3 extends Activity {
private EditText numET; // 由于多个方法使用, 定义为成员变量
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
numET = (EditText) findViewById(R.id.numET); // 找到文本框
}
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); // 使用意图开启一个界面(拨打电话的界面)
}
}
MainActivity4.java 第四种触发事件的写法
package com.zwj.phone; import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity01 extends Activity { private EditText numET; //由于多个方法使用,定义为成员变量 private Button callBT; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); find_and_modify_button(); } private void find_and_modify_button() { numET = (EditText) findViewById(R.id.numET); // 找到文本框 callBT = (Button) findViewById(R.id.callBT); // 找到按钮对象 callBT.setOnClickListener(callBT_listener); } private Button.OnClickListener callBT_listener = new Button.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); } }; }
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.zwj.phone"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="4"
android:targetSdkVersion="10" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.zwj.phone.MainActivity2" //根据使用选择需要的MainActivity
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>