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

  • 相关阅读:
    整理—类型转换
    HTML简历
    数组
    选择语句2
    类型转换、运算符'
    C#(VS)基础
    hdu_1037(水题水疯了。。。史上最水)
    hdu_1033(我怎么找到的这么水的题,只为保存代码。。。)
    hdu_1030(数学题+找规律)
    hdu_1029_hash/map
  • 原文地址:https://www.cnblogs.com/mengxiao/p/6009628.html
Copyright © 2020-2023  润新知