Android开发学习——打电话应用
打电话应用
system/app/phone.apk 这个是打电话应用,这个Java API 不允许应用级程序员改写,系统级才可以
system/app/dialer.apk 这个是拨号器应用,可以重写一个第三方的拨号器
1.在res-layout-activity_main.xml里定义布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content" // 组件必须设置宽高,否则不能通过编译
android:text="请输入号码:"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/et"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="拨打"
android:id="@+id/bt" // 如果要在java代码中操作某个组件,则组件需要设置id,这样才能在代码中通过id拿到这个组件
/> </LinearLayout>
2.src里写源代码
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) { //App创建时调用由操作系统调用此方法
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//给按钮设置点击监听
//拿到按钮对象
Button bt = (Button) findViewById(R.id.bt);
//设置监听
bt.setOnClickListener(new Myclick());
}
class Myclick implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
System.out.print("按钮被点击了");
EditText et = (EditText) findViewById(R.id.et);
String phone = et.getText().toString();
//在一个应用中启动另一个应用,在拨号器应用里启动打电话应用
//Android系统中基于动作机制,来调用系统的应用,你告诉系统你想做什么动作,系统就会把能做这个动作的应用给你,如果没有这个应用,会抛异常
//设置动作,通过意图告知系统
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);//设置动作,打电话
intent.setData(Uri.parse("tel:"+phone));
startActivity(intent);//把意图告诉系统
}
}
}
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开发学习——打电话应用的更多相关文章
- Android开发学习之路--Android系统架构初探
环境搭建好了,最简单的app也运行过了,那么app到底是怎么运行在手机上的,手机又到底怎么能运行这些应用,一堆的电子元器件最后可以运行这么美妙的界面,在此还是需要好好研究研究.这里从芯片及硬件模块-& ...
- Android开发学习之路-RecyclerView滑动删除和拖动排序
Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...
- Android开发学习路线图
Android开发学习方法: Android是一个比较庞大的体系,从底层的Linux内核到上层的应用层,各部分的内容跨度也比较大.因此,一个好的学习方法对我们学习Android开发很重要. 在此建议, ...
- android开发学习笔记000
使用书籍:<疯狂android讲义>——李刚著,2011年7月出版 虽然现在已2014,可我挑来跳去,还是以这本书开始我的android之旅吧. “疯狂源自梦想,技术成就辉煌.” 让我这个 ...
- Android开发学习总结(一)——搭建最新版本的Android开发环境
Android开发学习总结(一)——搭建最新版本的Android开发环境(转) 最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Android开发虽然有所了解,但是 ...
- Android开发学习之LauncherActivity开发启动的列表
Android开发学习之LauncherActivity开发启动的列表 创建项目:OtherActivity 项目运行结果: 建立主Activity:OtherActivity.java [jav ...
- 最实用的Android开发学习路线分享
Android开发学习路线分享.Android发展主导移动互联发展进程,在热门行业来说,Android开发堪称火爆,但是,虽然Android有着自身种种优势,但对开发者的专业性要求也是极高,这种要求随 ...
- Android开发学习必备的java知识
Android开发学习必备的java知识本讲内容:对象.标识符.关键字.变量.常量.字面值.基本数据类型.整数.浮点数.布尔型.字符型.赋值.注释 Java作为一门语言,必然有他的语法规则.学习编程语 ...
- Android开发学习之路--基于vitamio的视频播放器(二)
终于把该忙的事情都忙得差不多了,接下来又可以开始good good study,day day up了.在Android开发学习之路–基于vitamio的视频播放器(一)中,主要讲了播放器的界面的 ...
随机推荐
- A Simple OpenGL Shader Example
A Simple OpenGL Shader Example eryar@163.com Abstract. OpenGL Shading Language, the high-level progr ...
- 【转】oracle中in和exists的区别
原文地址:http://blog.itpub.net/7478833/viewspace-441043/ 感谢作者 in 和 exists区别 in 是把外表和内表作hash join,而ex ...
- MVC4做网站后台:栏目管理1、添加栏目
把栏目添加删除跟前台混在一起结构清晰,现在有了后台管理的区域就把后台管理相关的代码分开. 要实现功能: 1.添加栏目 2.删除栏目 3.修改栏目信息 -- 一.开始 1.添加 接口InterfaceC ...
- Android全屏(包含3种隐藏顶部状态栏及标题栏和一种隐藏Android 4.0平板底部状态栏的方法)
http://www.xuebuyuan.com/558284.html 方法一 public class MainActivity extends Activity { @Override prot ...
- 万能Adapter以及ViewHolder性能优化
//CommonAdapter import android.content.Context; import android.widget.BaseAdapter; import java.util. ...
- Ruby之入门(一)
前言 这门语言很少去听过,可能是没怎么用到就不会听到太多关于ruby的消息,工作需要这门语言,需要从0开始学习这门语言,慢慢学习简直...太神奇了...,原谅我见识浅薄.原来很早就已经出世了,园子中也 ...
- 制作在线简历(一)——Loading与底部菜单
想装逼下搞个在线简历,然后顺便用些CSS3与HTML5的一些技术,再顺带把响应式也加上去去,在移动端也能看到. 不过我的配色low了点,还望见谅...... 一.首页Loading效果 这次就打算把几 ...
- Dean-Edward的事件系统实现
jQuery早期的事件系统,主要借鉴自Dean-Edward的事件模型.虽说早期的该事件模型也有些许bug,诸如: 1,绑定的事件及其处理程序等数据并未存储到缓存中,而是直接存储在dom元素上,这样不 ...
- 相克军_Oracle体系_随堂笔记007-PGA
实际工作中,Oracle中有两个很重要:Server Process 和 PGA. PGA内存作用和构成 1.PGA作用 2.PGA构成 1)private SQL area 2)Sess ...
- 相克军_Oracle体系_随堂笔记009-检查点队列
1.检查点队列 checkpoint queue RBA 日志块地址 redo block address LRBA 第一次被脏的地址 HRBA 最近一次被脏的地址 on disk rba 重做日志( ...