- 浏览: 456118 次
- 性别:
- 来自: 成都
-
文章分类
- 全部博客 (377)
- Java (66)
- C++ (0)
- VC++ (0)
- .net (1)
- css (36)
- 数据库 (22)
- html (2)
- extjs (1)
- jpbm (0)
- javascript (31)
- 物资管理 (1)
- java基础 (5)
- C# (0)
- Android (56)
- window service (1)
- 其他 (2)
- Web服务器 (7)
- jbpm (1)
- eclipse (2)
- tomcat (3)
- java字符串与二进制的相互转化 (1)
- Oracle 数据库 (6)
- FreeMarker (8)
- 浏览器 (1)
- php (1)
- photoshop (6)
- spring (4)
- spring mvc (2)
- Acegi (1)
- webStorm 3.0 (4)
- Mongodb (8)
- mysql (9)
- 软件开发:需求分析 (1)
- 把Java程序作为Windows系统服务 (1)
- nodejs (4)
- json (1)
- 缓存 (1)
- J2ee (2)
- Flash报表 (1)
- MyEclipse+Maven+Tomcat (11)
- 生活 (1)
- Ubuntu (1)
- Bootstrap (1)
- jquery easy ui (2)
- 敏捷开发 (1)
- phone gap (1)
- rest (1)
- 移动开发 (22)
- Redis + Jedis + Spring (3)
- anroid (7)
- grunt 教程 (7)
- PhoneGap (2)
- sublime text (7)
- mariadb (1)
- linux (1)
- maven (2)
- jquery (1)
- ActiveMQ (1)
- LVS Nginx (1)
- nginx (6)
- ngnix (1)
- 爱因斯坦 (1)
- 天干地支 (1)
最新评论
-
muqingren:
...
Maven多模块布局实例详解 -
shutear:
解决了我的难题,谢谢分享!
Unable to load configuration. - action - file:/D:/studytool/apache-tomcat-6.0.16 -
702346318:
[img][/img][flash=200,200][/fla ...
CAS单点登录完整教程(上)【转】 -
liuguofeng:
PersonS631887934 写道学习中。。 有个问题想请 ...
js constructor属性 -
S631887934:
学习中。。 有个问题想请教楼主为什么要加上Person.pro ...
js constructor属性
引言
上篇我们介绍了Intents和Intent Filters的理论部分,主要是介绍了:activities、services、broadcast receivers三种组件的Intent机制两种Intent(显式和隐式)及它们如何去匹配目的组件、Intent对象包含哪些信息、Intent Filters的action & category & data。
Intent的重要性,我不再着重介绍了,但我还是要说:Intent能够使应用程序突破沙盒与外界交流,者这使得Android的世界变得丰富多彩!本篇将用实例来介绍,如何应用Intent,而且继续用SMS方面的例子来阐述。本文的主要内容如下:
- 例子(需求)描述
- STEP1、添加用于显示通讯录的布局文件
- STEP2、添加Button的点击事件
- STEP3、添加通讯录活动
- STEP4、解析通讯录返回的数据
- STEP5、在清单文件AndroidManifest.xml中注册通讯录活动和读取Contact数据库的权限
- 总结
例子(需求)描述
用手机发过SMS的人都知道:
- 用户可以先编辑短信,然后再去通讯录中选择相应的人并发生给他。
- 用户可以在短信内容中插入通讯录中联系人的号码。
我们的这个例子就是要说明如何实现这个功能。要实现这个功能,即是创建一个新的Activity选择(ACTION_PICK)通讯录中的数据,它会显示通讯录中的所有联系人并让用户选择,然后关闭并返回一个联系人的URI给短信程序。下面介绍如何一步一步实现类似的功能,而且是在之前Android 开发之旅:短信的收发及在android模拟器之间实践(一)中发送SMS的例子(TextMessage)基础上加上从通讯录中选择联系人的功能。
STEP1、添加用于显示通讯录的布局文件
我们用一个ListView来显示整个通讯录,其中用TextView显示每一记录。它们的xml文件分别为contact.xml、listitemlayout,如下所示:
====================================contact.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"
>
<ListView android:id="@+id/contactListView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
=================================== listitemlayout
<?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">
<TextView android:id="@+id/itemTextView" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:padding="10px"
android:textSize="16px" android:textColor="#FFF" />
</LinearLayout>
为了能够打开通讯录,我们还需要在TextMessage程序中加入一个Button btnContact,通过点击btnContact激活显示通讯录的活动。这只需在main.xml文件中加入如下代码:
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/btnContact"
android:id="@+id/btnContact"
/>
记得还有在values/strings.xml中相应的加入<string name="btnContact">contact</string>。
STEP2、添加Button的点击事件
在上面准备工作做完之后,我们需要监听btnContact的点击事件,当用户点击btnContact时,跳转显示通讯录界面,当用户选择一个联系人之后,返回SMS程序的主界面。这里就要用到了伟大的Intent啦!
btnContact = (Button) findViewById(R.id.btnContact);
btnContact.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(Intent.ACTION_PICK,
ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);
}
});
STEP3、添加通讯录活动
添加一个类文件,类名为ContactPick(表示通讯录活动名)继承Activity。它的主要功能就是获取从SMS主程序传递来的Intent并提取数据;然后去查询通讯录数据库,取出数据并填充到STEP1中定义的ListView;最后,还需要添加当用户选择一个联系人的事件onItemClick,将结果返回给SMS主程序,这里也用到了我们伟大的Intent啦!代码如下:
package skynet.com.cnblogs.www;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.AdapterView.OnItemClickListener;
public class ContactPick extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent orgIntent=getIntent();
Uri queryUri=orgIntent.getData();
final Cursor c = managedQuery(queryUri,
null,
null,
null,
null);
String[] fromColumns=new String[]{ContactsContract.Contacts.DISPLAY_NAME};
int[] toLayoutIDs = new int[] { R.id.itemTextView };
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.listitemlayout, c, fromColumns, toLayoutIDs);
ListView lv = (ListView) findViewById(R.id.contactListView);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int pos,
long id) {
c.moveToPosition(pos);
int rowId = c.getInt(c.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
Uri outURI = Uri.parse(ContactsContract.Contacts.CONTENT_URI.toString() + rowId);
Intent outData = new Intent();
outData.setData(outURI);
setResult(Activity.RESULT_OK,outData);
finish();
}
});
}
}
发表评论
-
Android GridView属性集合
2015-02-27 15:01 1128GridView的一些特殊属性: 1.andr ... -
Android在listview添加checkbox实现原理与代码
2015-02-26 23:09 621Android在listview添加checkbox如何实 ... -
listview 选中高亮显示实现方法
2015-02-26 23:08 930人人客户端有一个很好的导航栏,如下图所示,当点击左侧List ... -
Android -----listView的属性大全
2015-02-03 11:52 789... -
Android中<meta-data>的使用
2015-02-02 14:49 745http://blog.sina.com.cn/s/blo ... -
Android Activity的切换动画
2015-01-31 23:21 1558app中Activity之间跳转方式太单调有没有。。。想改变 ... -
GitHub 优秀的 Android 开源项目
2015-01-18 00:06 1285GitHub 优秀的 Android 开 ... -
Android之ActionBar、Tabs、Fragment、ViewPager实现标签页切换并缓存页面
2014-12-29 16:48 797感觉 Android 到处都是坑,每个地方都要把人折腾半天。 ... -
Android APK反编译详解(附图)
2014-09-27 22:46 692本文Android反编译教程,测试环境: Win7 Ult ... -
ActionBar样式解析
2014-09-26 15:58 1398Android的装饰风格有多种,这些风格的不同之处主要体现在 ... -
slidingMenu的使用教程
2014-09-24 22:32 1667开源项目SlideMenu使用详解,有需要的朋友可以参考下 ... -
Android ViewGroup.setDescendantFocusability函数
2014-09-22 22:40 786这个函数是在ViewGroup里定义的,主要用于控制chil ... -
android 制作9.png图片
2014-09-22 14:42 1182... -
No tab content FrameLayout found for id xxxxxxx
2014-09-21 23:28 941android 4.4 自己加上的 androi ... -
Android学习笔记:TabHost 和 FragmentTabHost
2014-09-21 22:43 1083TabHost 命名空间: ... -
FragmentTabHost切换Fragment时避免重复加载UI
2014-09-21 11:25 1015使用FragmentTabHost时,Fragment之间切 ... -
android源码查看 android-support-v4.jar
2014-09-21 10:45 1409想查看android-support-v4.jar的源码的时 ... -
Android Support v4、v7、v13的区别和应用场景
2014-09-20 18:52 824http://my.oschina.net/chengliq ... -
理解Fragment生命周期
2014-09-20 18:50 750官网帮助文档链接: http://developer.and ... -
: android.support.v4.app.SuperNotCalledException
2014-09-20 18:46 304009-20 18:44:40.842: E/AndroidR ...
相关推荐
### Android开发之旅:深入理解Intents与Intent Filters 在Android开发中,`Intents`与`Intent Filters`是实现组件间通信的关键技术。通过这两项技术,开发者可以让应用程序中的不同组件,甚至不同的应用程序之间...
### Android开发之旅:深入理解Intents与Intent Filters 在Android应用开发中,Intents与Intent Filters扮演着极其关键的角色,它们使得应用间的通信成为可能,从而打破了应用沙盒的隔离状态,实现了应用间的互动与...
Android开发之旅:环境搭建及HelloWorld 1 Android开发之旅:HelloWorld项目的目录结构 2 Android开发之旅:android架构 3 Android开发之旅:应用程序...Android开发之旅 Intents和Intent Filters(实例部分) 17
总之,Intent和Intent Filters是Android系统的核心组成部分,它们使得不同应用间的交互变得简单而灵活。通过正确配置Intent Filter,开发者可以让自己的应用能够响应特定的Intent,从而实现各种功能,如拨打电话、...
本书主要内容为:Android开发环境搭建、Android SDK介绍、Android应用程序结构剖析,并对Android 中最重要的组件Activity、Intents&Intent Filters&Broadcast receivers、Intent、Service、Content Providers进行了...
8. **Intents and Intent Filters**:Android应用间的通信机制,允许启动活动、发送广播和处理数据共享。 9. **Notifications**:Android的通知系统,用于向用户展示应用的重要信息。 10. **Services**:后台运行...
#### 八、意图和意图过滤器 - Intents and Intent Filters - **意图过滤器(Intent filters)**: 用于声明组件能够响应哪些类型的Intent。 - **通常情况(Common cases)**: 包括启动Activity、启动Service等常见场景。...
#### 十、意图和意图过滤器(Intents and Intent Filters) `Intent`是Android中一种非常重要的机制,它用于启动其他组件或在组件间传递数据。通过使用`Intent`,开发者可以让组件之间互相发现和交互。 ##### 意图...
#### 十三、意图和意图过滤器(Intents and Intent Filters) 意图(Intent)用于在组件之间传递消息和数据,而意图过滤器(Intent Filters)则用于定义组件对哪些类型的Intent感兴趣。 #### 十四、数据存储(Data Storage...
- **Android开发—Intents和Intent filters实例.doc**:Intent是Android应用间通信的关键,正确使用能提高效率并减少资源浪费。 - **Android开发—Android UI设计技巧.doc**:UI设计直接影响性能和用户体验,如使用...
#### 五、意图和意图过滤器 - Intents and Intent Filters **1. 意图过滤器 - Intent Filters** - **意图过滤器**: Intent 过滤器定义了组件可以响应哪些 Intent 类型。这是通过在 AndroidManifest.xml 文件中声明...