首页 > 代码库 > Android开发学习——打电话应用

Android开发学习——打电话应用

 

打电话应用

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("第四种");
        }

 

Android开发学习——打电话应用