打电话应用
system/app/phone.apk 这个是打电话应用,这个Java API 不允许应用级程序员改写,系统级才可以
system/app/dialer.apk 这个是拨号器应用,可以重写一个第三方的拨号器
1.在res-layout-activity_main.xml里定义布局:
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:paddingBottom="@dimen/activity_vertical_margin" 6 android:paddingLeft="@dimen/activity_horizontal_margin" 7 android:paddingRight="@dimen/activity_horizontal_margin" 8 android:paddingTop="@dimen/activity_vertical_margin" 9 tools:context=".MainActivity" 10 android:orientation="vertical" > 11 <TextView 12 android:layout_width="wrap_content" 13 android:layout_height="wrap_content" // 组件必须设置宽高,否则不能通过编译 14 android:text="请输入号码:" 15 /> 16 <EditText 17 android:layout_width="match_parent" 18 android:layout_height="wrap_content" 19 android:id="@+id/et" 20 /> 21 <Button 22 android:layout_width="match_parent" 23 android:layout_height="wrap_content" 24 android:text="拨打" 25 android:id="@+id/bt" // 如果要在java代码中操作某个组件,则组件需要设置id,这样才能在代码中通过id拿到这个组件 26 /> 27 28 </LinearLayout>
2.src里写源代码
1 public class MainActivity extends Activity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { //App创建时调用由操作系统调用此方法 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_main); 7 //给按钮设置点击监听 8 //拿到按钮对象 9 Button bt = (Button) findViewById(R.id.bt); 10 //设置监听 11 bt.setOnClickListener(new Myclick()); 12 } 13 14 class Myclick implements OnClickListener{ 15 @Override 16 public void onClick(View arg0) { 17 // TODO Auto-generated method stub 18 System.out.print("按钮被点击了"); 19 EditText et = (EditText) findViewById(R.id.et); 20 String phone = et.getText().toString(); 21 //在一个应用中启动另一个应用,在拨号器应用里启动打电话应用
//Android系统中基于动作机制,来调用系统的应用,你告诉系统你想做什么动作,系统就会把能做这个动作的应用给你,如果没有这个应用,会抛异常
//设置动作,通过意图告知系统
22 Intent intent = new Intent(); 23 intent.setAction(Intent.ACTION_CALL);//设置动作,打电话 24 intent.setData(Uri.parse("tel:"+phone)); 25 startActivity(intent);//把意图告诉系统 26 } 27 28 } 29 30 31 }
3.添加权限,在清单文件里,底下的permission-add-UsesPermission-右侧的name进行选择相应的权限,在代码中会自动生成,如下:
<uses-permission android:name="android.permission.CALL_PHONE"/>
RunAs--AndroidApplication,运行结果如下:
补充一点:
事件监听这个是常见的
点击事件的四种写法
第一种
* 定义一个MyListener实现onClickListener接口
Button bt1 = (Button) findViewById(R.id.bt1);
bt1.setOnClickListener(new MyListener());
第二种
* 定义一个匿名内部类实现onClickListener接口
Button bt2 = (Button) findViewById(R.id.bt2);
bt2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("第二种");
}
});
第三种
* 让当前activity实现onClickListener接口
Button bt3 = (Button) findViewById(R.id.bt3);
bt3.setOnClickListener(this);
第四种
* 给Button节点设置onClick属性,
android:onClick="click"
* 然后在activity中定义跟该属性值同名的方法
public void click(View v){
System.out.println("第四种");
}