实时文件夹是一种用来显示由某个ContentProvider提供的数据信息的桌面组件。
要创建一个实时文件夹。必须要有两方面的支持。一方面是,要定义一个用来创建实
时文件夹的Activity.另一方面是指定数据信息Uri的ContentProvider必须支持实时文件夹的查询。
与在Launcher的桌面上添加一个快捷方式类似,用户在桌面上长按后选择实时文件夹就会弹出
一个可用实时文件夹的列表对话框。若我们想把自己应用程序内的Activity也添加到这一列表中,
同样只需要在该Activity注册时添加一个Action为android.intent.action.CREATE_LIVE_FOLDER的IntentFilter。
而在这个创建实时文件夹的Activity中,我们要把实时文件夹的信息以附加信息的形式存储在一个Intent对象当中,
并通过Result返回给Launcher应用程序执行添加。下表列出了与实时文件夹信息相关的附件信息的键值与数据类型。
实时文件夹的键值与数据类型
图标 ICON ShortcutIconResource
名称 NAME String
显示方式 DISPLAY_MODE int
操作基础Intent BaseIntent Intent
其中DISPLAY_MODE有两种表现形式。1的时候表示已栅格形式出现。2则表示以列表的形式出现。
除了以上的附加信息,对于要查询数据的URI则是以Data的形式存储在Intent对象中的。
/实现代码如下所示:
package com.brucecheng.folder;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.LiveFolders;
import android.app.Activity;
import android.content.Intent;
@SuppressWarnings("deprecation")
public class FolderActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//判断动作是否为创建实时文件夹
if(getIntent().getAction().equals(LiveFolders.ACTION_CREATE_LIVE_FOLDER)){
//创建Intent实例
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.glassface));
//显示模型
intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_DISPLAY_MODE, LiveFolders.DISPLAY_MODE_GRID);
setResult(RESULT_OK, intent);
}else{
setResult(RESULT_CANCELED);
}
finish();
}
}