- 浏览: 81956 次
- 性别:
- 来自: 郑州
最新评论
-
老梦a:
...怎么用的呢,我把js和css都引入了,但是用的时候没起作 ...
在Ext的grid里实现带radio单选功能的gridList -
Mydwr:
我也正在找要实现这样的效果
在Ext的grid里实现带radio单选功能的gridList -
kkgoing:
运行不报错,但是还是有问题,index页面打不开,测试的时候插 ...
昨天整理的基于Annotation的MVC框架SSH示例 -
kjsoloho:
感谢你的肺腑之言
价值是如何放大的 -
kjsoloho:
希望继续,期待
《Android程序员指南》翻译暂停,望见谅
为给你的Activity分配正确的权限,你首先需要知道你需要分配什么权限。正确的例子是使用Dialer Activity。访问Dailer Activity被CALL_PHONE权限所管理。通过分配权限,Android可以让你的Intent启动Dialer Activity。
如何给Activity添加权限?你需要编辑Activity的Manifest。如果使用Eclipse的话,双击AndroidManifest.xml。这会打开Manifest预览窗口,如下所示:
要编辑Android的权限,点击Permissions链接,会把你带到Android Manifest Permissions窗口,如下所示:
该窗口列出了你当前为Activity分配的权限。假设你在新项目中工作,你不需要分配权限。因此,点击Add 按钮开始流程。在打开的对话框中,选择Uses Permission并点击OK。
回到Android Manifest Permissions窗口,在Name下拉列表中,选择android.permission.CALL_PHONE,如下所示。这就将CALL_PHONE权限添加到了你的Activity中。
由于你已经添加了CALL_PHONE权限。看一下AndroidManifest.xml文件。它应该类似如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=http://schemas.android.com/apk/res/android
package="android_programmers_guide.AndroidPhoneDialer">
<application android:icon="@drawable/icon">
<activity android:name=".AndroidPhoneDialer"
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>
<uses-permission android:name="android.permission.CALL_PHONE">
</uses-permission>
</manifest>
最有意思的那行在文件的最后:
<uses-permission android:name="android.permission.CALL_PHONE">
</uses-permission>
这一行是由Eclipse的Android插件添加的。如果你想要亲自干,你可以直接编辑AndroidManifest.xml文件来分配权限。然而,如果你不确定你要添加什么权限或者用什么语法添加,你可以使用Manifest的向导。
既然添加了权限,那就重编译你的恶Activity。你的模拟器现在应该可以拨号了,如下所示:
你创建的Activity用了一个Intent来启动设备的Call Activity并呼叫了555-1212号码。这演示了你可以如何方便的利用Intent。然而,这个应用离实际相差太远。也就是说,实际上会如何启动一个带有硬编码的电话号码的Activity,仅为了拨号?
下面的章节,你会更加具体地使用创建的应用,通过添加一个按钮,初始化CALL_ACTION Intent启动,和一个文本框,来使用户输入他们自己选择的电话号码。
修改AndroidPhoneDialer
本章为你演示,如何通过添加一些特性来更改你的AndroidPhoneDailer以是它更加具体一点。在本章结尾,你会很熟练的使用不仅仅是Intents,而且还有EditTexts和Buttons。
添加按钮
本章为你展示如何更改你的项目以增加一个按钮。不是在Activity启动时启动Intent,而是通过按钮启动。除了文本之外,按钮也是应用中最普遍的对象类型。
按钮构成了用户和应用之间的交互。了解如何在Android中创建和利用按钮对创建一个实用的,友好的Activity来说非常重要。
你将在main.xml中创建按钮。回想一下第五章,里面我们为你的Hello World!Activity创建了TextView。TextView有一个明显的结构,大概如此:
<View android:id=<id>
android:layout_width=<width>
android:layout_height=<height>
>
这种格式在视图中非常普通,而按钮也不例外。你用到的设置按钮的XML属性有 android:id,android:layout_width,andtoid:layout_height和android:text。这四个XML属性有效的描述了你的按钮,所以你可以在你的Activity中使用它。
1. Assign to your Button the ID callButton:
android:id="@+id/callButton"
2. Set layout_width and layout_height to fill_parent and wrap_content, respectively:
android:layout_width="fill_parent"
android:layout_height="wrap_content"
3. Set the text of the Button to “Show Dialer,” which is descriptive enough to identify
what the Button will do:
android:text="Show Dialer"
完整的带属性的按钮XML,看起来像:
<Button android:id="@+id/callButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Show Dialer" />
看一下完成的main.xml文件。按钮出现在了内容中了,并等着你去对它编码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=http://schemas.android.com/apk/res/android
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button android:id="@+id/callButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Show Dialer" />
</LinearLayout>
为了开始给按钮添加功能,你需要给AndroidPhoneDailer.java添加其它的包。这个包含在按钮视图中的包是
android.widget.Button;
现在你已经将按钮部件导入到了你的项目中。
这为开始编码给你提供了必要的信息。你在项目中的编码应用会在你的Activity中输出一个按钮,当点击时,启动Call Activity。Call Activity应该启动带“tel:5551212”的数据。屏幕的结果会和你原先的AndroidPhoneDialer一样。
描述的功能包括一些不同的概念。首先,你必须使用main.xml中创建的按钮属性编写一个按钮。其次,你需要创建一个功能,从你上一个项目中调用CALL_ACTION Intent代码。最后,你的按钮需要能够执行这个功能,并启动Intent。
创建按钮的属性是
final Button <button_name> = <button>
等号左侧在代码中创建了按钮。等号右侧是你从main.xml中调用按钮属性的地方。为了调用这些属性,你需要使用findViewById()并将结果类型限定为一个Button。这听起来要比实际上复杂。
记住,当你给main.xml添加一个按钮属性,你需要给按钮一个唯一的android:id,callButon,即被Eclipse的Android插件在id文件中所注册的R.id.callButton。通过传递id callButton使用findViewById()从main.xml中取出按钮属性。
findViewById(R.id.callButton)
不要忘记给结果类型限定为Button。
(Button) findViewById(R.id.callButton)
这个声明做成了等号的右侧部分。创建按钮的全部看起来像:
final Button callButton = (Button) findViewById(R.id.callButton);
现在你有了可用的按钮,但是你还需做些事情。这个按钮本身若无更多代码并不能做什么。如本例中,你需要让它执行CALL_ACTION Intent。因此你需要在你已存在的Intent call基础上创建一个小功能。当按钮被按下时会给你传递呼叫的内容。
这没啥大不了的,如果你熟悉Java编程的话。你需要安装onClick()方法,从前一节中调用Intent 代码。这个onClick()方法,将视图当做是一个参数。;然而,本项目中,onClick()本身并没有进行拨号:
public void onClick(View v){
Intent callIntent = new
Intent(Intent.CALL_ACTION,Uri.parse("tel:5551212"));
callIntent.setLaunchFlags(Intent.NEW_TASK_LAUNCH );
startActivity(callIntent);
}
应用剩下的最后一部分代码是绑定按钮和onClick的监听器。Java开发者应该熟悉监听器。对于那些不熟悉Java或监听器的人来说,监听器就是Java对象能监听其它对象的调用的方法。Android中的概念相同。你会在Android中创建监听器,让Android视图监听onClick方法。
对于该工程来说,你需要为你的按钮创建一个监听器,来监听来自Button Activity的onClick事件。当用户按下按钮,监听器就会调用onClick()方法。为了创建你所需的监听器,你要使用按钮的seOnClickListener()方法。
如果你熟悉Java开发,这种结构你不会陌生。这是Java中一个典型的onClickListener接口实现。你将看到的是利用Java匿名了类来执行Button的onClickListener事件。当然,作为匿名类,你也可以使用本地的变量——例如Button——如果变量定义为final.
setOnClickListener()方法带了一堆参数,第一个是个实例化的onClickListener()第二个是先前创建的onClick。你的setOnClickListener()看起来像:
callButton.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v){
Intent callIntent = new
Intent(Intent.CALL_ACTION,Uri.parse("tel:5551212"));
callIntent.setLaunchFlags(Intent.NEW_TASK_LAUNCH );
startActivity(callIntent);
}
});
这个代码段表名,当callButton被按下时,onClickListener会在onClick中执行代码。Onclick中的代码会执行CALL_ACTION Intent并呼叫电话555-1212.
你最终的AndroidPhoneDialer.java看起来像:
package android_programmers_guide.AndroidPhoneDialer;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.view.View;
import android.content.Intent;
import android.net.Uri;
public class AndroidPhoneDialer extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main );
/** Create the Button */
final Button callButton = (Button) findViewById(R.id.callButton);
/** Set the onClickListener to call the onClick */
callButton.setOnClickListener(new Button.OnClickListener() {
/** Use the onClick to call the existing Intent code */
public void onClick(View v){
Intent callIntent = new
Intent(Intent.CALL_ACTION,Uri.parse("tel:5551212"));
callIntent.setLaunchFlags(Intent.NEW_TASK_LAUNCH );
startActivity(callIntent);
}
});
}
}
编译并在模拟器中运行该Activity。主Activity会显示一个名为Show Dialer的按钮。它会打开Call Activity并拨打555-1212.主Activity如下所示.
如你所见,Android是一个非常稳健和灵活的平台。利用相对较少的代码行,少于一页,你就创建了基于设备上的手机硬件,并通过一个按钮启动的Activity。通过这一点,你也应该熟悉了Android处理Activity、Intent和View的方式。
你的AndroidPhoneDialer Activity仍然不实用。你需要为它添加更多功能。本章的最后一节为你讲述如何利用EditText视图让你的用户输入电话号码。该号码会传递给CALL_ACTION Intent(而不是硬编码值tel:5551212)。
评论
呵呵,不好意思,打错字了。
发表评论
-
第八章 列表、菜单以及其它视图——续
2010-03-19 09:00 1453AndroidViews.java 创建这个Activity ... -
第八章 列表、菜单以及其它视图——继
2010-03-19 08:55 1797本节展示radiogroup.xml的全部代码。根据章节前面的 ... -
第八章 列表、菜单以及其它视图——后
2010-03-19 08:50 1429AndroidViews.java 创建这个Activity ... -
第八章 列表、菜单以及其它视图——下
2010-03-19 08:42 1781这里是你的完整的AndroidManifest.xml项目文件 ... -
第八章 列表、菜单以及其它视图——中
2010-03-19 08:39 1659这段代码有个问题:onOptionsItemSelected( ... -
第八章 列表、菜单以及其它视图——上
2010-03-19 08:31 2595关键技能和概念 l 构建Activity l ... -
第七章 使用Intents与Phone Dialer——下
2010-03-02 09:23 1701实现EditText视图 你需要 ... -
第七章 使用Intents与Phone Dialer——上
2010-03-02 09:07 3823第一章 使用Intents与Phone Dialer ... -
第六章 使用命令行工具与Android模拟器——下
2010-02-25 16:49 6156由于你在Android服务端安放了应用,你就可以删除它。使用命 ... -
第六章 使用命令行工具与Android模拟器——中
2010-02-25 16:38 5410<arg value="install&quo ... -
第六章 使用命令行工具与Android模拟器——上
2010-02-25 16:25 4578关键技能和概念 l 使用Android SDK ... -
第五章 应用:Hello World!——下
2010-02-24 09:07 2669还是Hello World! 本节中,你会创建另一个 ... -
第五章 应用:Hello World!——上
2010-02-24 09:00 2380关键技能和概念 l ... -
第四章 探索Android SDK
2010-02-21 22:27 6209关键技能和概念 l ... -
第三章 下载、安装Android SDK
2010-02-20 16:19 6709关键技能和概念 l ... -
第二章 下载、安装Eclipse
2010-02-20 11:28 5366关键技能和概念 l 选择一个开发环境 l ... -
第一章 Android是什么?
2010-02-20 11:17 2074关键技能和概念 l 嵌入式编程的历史 l ... -
致谢与序言
2010-02-05 16:12 1333致谢 感谢所有参与编写这本书的人,我的经纪 ... -
为什么要翻译《Android A Programmer's Guide》——《Android程序员指南》
2010-02-05 16:08 2893学习Android编程,却发现这些方面的好书很少,于是 ...
相关推荐
7. **性能优化**:在Android 8.1中,Dialer针对内存管理、CPU使用和电量消耗进行了优化,以提升用户体验。 通过分析Dialer源码,开发者可以了解Android系统的通话框架,学习如何集成电话服务,处理来电、去电,以及...
第 1 章什么是 Android 第二章 下载和安装 ...第七章 使用 Intents 和电话拨号盘 第八章 列表,菜单和其它 Views 第九章 使用手机的 GPS 功能 . 第十章 使用 Google AP I 的 Gtak 第十一章 应用程序:找一个朋友
在给定的"安卓Android源码——项目中应用到的条码识别代码.zip"压缩包中,包含了实现这一功能的相关代码和资源文件。以下将详细介绍其中可能包含的关键知识点。 首先,条码识别的核心是利用相机捕捉图像,并通过...
#### 第七章 使用Intents和电话拨号盘 1. **Intents机制**: - **概念理解**:解释Intents的概念及其在Android中的作用。 - **发送短信**:演示如何使用Intent发送短信。 - **拨打电话**:展示如何通过Intent...
在第七章中,作者讲解了如何在Android应用中使用SQLite数据库,包括数据库的创建、查询、更新和删除操作。同时,还介绍了Content Provider的概念,它是Android四大组件之一,用于提供数据访问接口。 ### 第8章:...
项目中的“is_pos_answer_intents_classifies”可能是一个程序模块或者脚本,用于执行肯定句和否定句的分类。它可能包含了以下关键步骤: 1. **数据预处理**:这是任何NLP任务的第一步,通常包括分词、去除停用词、...
7. Intents与BroadcastReceiver:在Android中,电话事件通常通过Intent和BroadcastReceiver来传递。书中会讲解如何注册和使用BroadcastReceiver来监听电话相关的广播事件。 8. Permissions与安全:讨论与电话服务...
第七章:使用Intents和电话拨号盘 - **Intent机制**:探讨如何利用Intent在不同组件间传递数据和请求服务,实现应用间的交互与通信。 - **电话拨号盘集成**:展示如何在应用中集成电话拨号功能,使用户能直接从...
intent.putExtra(android.provider.ContactsContract.Intents.Insert.PHONE, tel); startActivity(intent); ``` 在上面的代码中,我们可以看到使用 Intent 跳转到系统应用中的不同界面,使用的 Action 和 Uri 是...
7 Using Intents and the Phone Dialer . . . 117 8 Lists, Menus, and Other Views . 149 9 Using the Cell Phone’s GPS Functionality . . 203 10 Using the Google API with GTalk . . . . 239 11 ...
- 第7章“Working with Menus”讨论了如何在Android应用中创建和使用菜单,菜单是提供用户选项的重要方式。 - 第8章“Fragments for Tablets and More”介绍了片段(Fragments)的概念,它们在平板电脑等大屏幕设备...
- 转换为VCard:将获取到的Cursor中的每一项联系人数据转化为VCard字符串,可以使用ContactsContract类的导出函数`ContactsContract.Intents.exportVCard()`或自定义实现。 - 写入文件:将VCard字符串写入到外部...
第七章专注于Android应用中菜单的创建与管理,包括选项菜单、上下文菜单以及子菜单等。 8. 平板电脑和更多设备的Fragment 第八章探讨了Fragment在平板电脑和大屏幕设备中的应用,为这些设备提供更加灵活和模块化的...
8. **第7章:数据库与内容提供者**(Databases and Content Providers):重点介绍SQLite数据库的使用方法,以及如何通过Content Provider实现数据共享。 9. **第8章:地图、地理编码与基于位置的服务**(Maps, ...
第七章:Files, Saving State, and Preferences 应用往往需要处理文件、保存应用状态以及用户偏好设置,本章将介绍如何使用文件输入输出、状态保存机制以及如何处理应用的配置信息。 第八章:Databases and Content...
【Android移动开发——个人理财通AS.zip】是一个关于Android应用开发的项目,主要目标是创建一个个人财务管理的应用程序。这个项目使用的是Eclipse IDE,它是一个广泛使用的Android开发工具,虽然现在更多的开发者...
第七章“使用Intents 和电话拨号盘”深入到Android的核心机制之一——Intent,解释了Intent如何连接应用的不同组件,并展示了如何与系统服务(如拨号盘)进行交互。 第八章“列表,菜单和其它Views”介绍了Android ...