实时文件夹

[size=large][b][color=blue]实时文件夹[/color][/b][/size]
  实时文件夹是一种用来显示由某个ContentProvider提供的数据信息的桌面组件。要创建一个实时文件夹,必须要有两方面的支持。一方面是,要定义一个用来创建实时文件夹的Activity。另一方面是,所指定数据信息URI的ContentProvider必须支持实时文件夹的查询。本节中就将要介绍如何为应用程序创建实时文件夹。

  与在Launcher的桌面上添加一个快捷方式类似,用户在桌面上长按后选择实时文件夹就会弹出一个可用实时文件夹的列表对话框。若我们想把自己应用程序内的Activity也添加到这一列表中,同样只需要在该Activity注册时添加一个Action为android.intent.action.CREATE_LIVE_FOLDER的IntentFilter。而在这个创建实时文件夹的Activity中,我们要把实时文件夹的信息以附加信息的形式存储在一个Intent对象当中,并通过Result返回给Launcher应用程序执行添加。下表列出了与实时文件夹信息相关的附件信息的键值与数据类型。

  实时文件夹的键值与数据类型
[align=center][img]http://dl.iteye.com/upload/attachment/563771/a16a77ef-1e2d-3fa3-a62c-597d0bc131b7.jpg[/img][/align]
  其中DISPLAY_MODE有两种,其值为1时,以栅格(Grid)形式显示展开后的实时文件夹内容,为2时则是以列表(List)形式显示。除了以上的附加信息,对于要查询数据的URI则是以Data的形式存储在Intent对象中的。由于Contacts的ContentProvider已经实现了对实时文件夹的相关支持,所以下面我们就以创建所有联系人的实时文件夹的程序来作为本节的示例。

TestActivity类
package com.ljq.activity;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.LiveFolders;

public class TestActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(getIntent().getAction().equals(LiveFolders.ACTION_CREATE_LIVE_FOLDER)){
Intent intent = new Intent();
intent.setData(Uri.parse("content://contacts/live_folders/people"));
intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_BASE_INTENT,
new Intent(Intent.ACTION_VIEW,ContactsContract.Contacts.CONTENT_URI));
intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_NAME, "电话本"); //快捷方式的标题
intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_ICON,
Intent.ShortcutIconResource.fromContext(this, R.drawable.png1));//快捷方式的图标
intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_DISPLAY_MODE, LiveFolders.DISPLAY_MODE_LIST);//显示模型
setResult(RESULT_OK, intent);
}
else{
setResult(RESULT_CANCELED);
}
finish();
}
}

清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ljq.activity" android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon"
android:label="@string/app_name">
<activity android:name=".TestActivity"
android:label="@string/app_name">
<!-- 注意此处 -->
<intent-filter>
<action android:name="android.intent.action.CREATE_LIVE_FOLDER" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="7" />

</manifest>

[align=center][img]http://dl.iteye.com/upload/attachment/563773/261b33db-db4e-3c95-a985-c23e56c4332b.png[/img][/align][align=center][img]http://dl.iteye.com/upload/attachment/563775/ece8efcd-80c2-3fc8-bde3-5061a59eb027.png[/img][/align][align=center][img]http://dl.iteye.com/upload/attachment/563777/cf5a8595-1dc6-3536-b703-aff7ac05902b.png[/img][/align]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值