`
yunlonglove
  • 浏览: 242621 次
社区版块
存档分类
最新评论

Android桌面组件开发之实时文件夹(Live_Folders)

 
阅读更多

实时文件夹是一种用来显示由某个ContentProvider提供的数据信息的桌面组件。要创建一个实时文件夹,必须要有两方面的支持。一方面是,要定义一个用来创建实时文件夹的Activity。另一方面是,所指定数据信息URIContentProvider必须支持实时文件夹的查询。

本人对于实现最基本的通讯录打电话简单操作俩种方法,并且我都进行了尝试,不过对于其中一种方法实现实在过于复杂,因为牵扯到众多不同种Cursor的应用,在这里本人得到了一个较为简单的方法实现想要的效果,还是先将图片能上来看其效果吧

点击之后

这是我通讯录里出现的人的设置,随机点击一个

得到我们最终想要的结果!

下面我们来看一下具体的操作设置:

首先是编辑AndroidManifest.xml文件

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.zzy.folder"

android:versionCode="1"

android:versionName="1.0" >

<uses-sdk android:minSdkVersion="10" />

<application

android:icon="@drawable/ic_launcher"

android:label="@string/app_name" >

<activity

android:name=".LivefoldersActivity"

android:label="@string/app_name" >

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

<action android:name="android.intent.action.CREATE_LIVE_FOLDER" />

<category android:name="android.intent.category.DEFAULT" />

</intent-filter>

</activity>

</application>

</manifest>

下面是XML文件的设计:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/hello" />

</LinearLayout>

要说明的是android.intent.extra.livefolder.BASE_INTENT这一附加信息,它的值是一个Intent对象。在用户单击展开实时文件夹后的选项时,首先该Intent对象的Data中的URI会附加上所点选项的ID,然后传入Launcher调用的startActivity方法中以启动所期望的Activity。这里我们把BASE_INTENT设置成了Actionandroid.intent.action.View、URI为content://contacts/people/的Intent对象。具体操作下面显示:

下面需要onCreate方法中将实现文件夹的相关信息装入Intent,并通过setResult方法设置为Intent,最后调用finish方法结束,并把结果返回给Home应用程序,以添加实施文件夹:

public class LivefoldersActivity extends Activity {

public static final Uri LIVE_FOLDER_URI = Uri

.parse("content://contacts/live_folders/people");

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

/*if (getIntent().getAction().equals(

* 我认为这里无需判断,既然已经在AndroidMainfest.xml文件里配置了,如若能打开这个Activity

* 证明这个判断就通过,这里就多此一举。

LiveFolders.ACTION_CREATE_LIVE_FOLDER)) {*/

Intent intent = new Intent();

intent.setData(LIVE_FOLDER_URI);

//设置文件夹的名字

intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_NAME,"MyAllContacts");

//这是最重要的设置 设置其动作ACtion

intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_BASE_INTENT,

new Intent(Intent.ACTION_VIEW, ContactsContract.Contacts.CONTENT_URI));

//设置图片

intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_ICON,

Intent.ShortcutIconResource.fromContext(this,

R.drawable.attached_image_placeholder));

//设置其显示效果为列表显示

intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_DISPLAY_MODE,

LiveFolders.DISPLAY_MODE_LIST);

setResult(RESULT_OK, intent);

/*} else {*/

//setResult(RESULT_CANCELED);

//}

finish();

}

}

最后还是要说一下有些资料参考书上写的数据源为“Content://contacts/live_folders/people”

即为联系人的信息 这确实没错,但我尝试他们点击之后的事件设置即为Intent.ACTION_CALL,发现其貌似存在很大的错误这无法直接设置进行拨打电话!所以这点需要注意!

分享到:
评论

相关推荐

    PyPI 官网下载 | flask_multiple_static_folders-1.0.tar.gz

    标题中的“PyPI 官网下载 | flask_multiple_static_folders-1.0.tar.gz”表明这是一个在Python Package Index(PyPI)上发布的软件包,名为`flask_multiple_static_folders`,版本为1.0,格式为tar.gz。PyPI是Python...

    Python库 | sync_folders-1.2.1-py3-none-any.whl

    Python库`sync_folders-1.2.1-py3-none-any.whl`是一个用于同步文件夹的工具,专为Python 3设计。这个压缩包包含了该库的预编译版本,用户可以直接安装而无需编译源代码,这极大地方便了开发者的使用。在Python生态...

    Android实时文件夹创建方法

    在Android开发中,实时文件夹(Live Folders)是一个特性,允许用户在主屏幕上创建一个动态的快捷方式,展示由ContentProvider提供数据的实时更新。这个功能尤其适用于那些需要显示实时信息的应用,如联系人、音乐...

    green_folders

    "green_folders"这一主题似乎是一个创新的文件夹样式设计,它采用全绿色调,旨在提供一种新颖、醒目的视觉体验,以提高用户在众多文件中的辨识度和工作效率。在这个数字化的时代,个性化和定制化的用户界面(UI)...

    fileSolution.zip_垃圾文件夹_Python__垃圾文件夹_Python_

    针对“fileSolution.zip_垃圾文件夹_Python__垃圾文件夹_Python_”这个标题,我们可以理解为这是一个关于使用Python处理垃圾文件夹的解决方案,可能是为了删除空文件夹或者批量移动文件并随后清理空文件夹。...

    unity 插件 Rainbow Folders 2(彩色文件夹)

    unity 插件 Rainbow Folders 2(彩色文件夹)

    批量建立文件夹(Text2Folders) v1.1.6.1.rar

    Text2Folders 从字面上看,是一个Txt转目录的软件,不过那样翻译就太直接了,不难理解的是,本软件可以利用txt 文件建立大量文件夹! 建立一个txt文档,每行输入一个文件夹名字,选好 txt 文件以及主目录,瞬间...

    PyPI 官网下载 | sync_folders-1.2.1-py3-none-any.whl

    资源来自pypi官网。 资源全名:sync_folders-1.2.1-py3-none-any.whl

    【Unity 插件】编辑器扩展 文件夹增强 Rainbow Folders 0.9.2

    Unity3d 编辑器扩展 文件夹效果增强插件,可以任意设置文件夹的图标,颜色,类型,方便复杂项目的资源管理分类,提高效率。 仅供学习交流使用,如有侵权请告知删除。

    批量新建文件夹利器–Folders Sequence Creator v1.1绿色单文件版

    《批量新建文件夹利器——Folders Sequence Creator v1.1绿色单文件版详解》 在日常工作中,我们常常需要创建大量的文件夹,例如整理项目资料、归档数据等。手动逐个新建不仅耗时,而且容易出错。为了解决这个问题...

    目录同步工具,可以同步文件夹内容,适合简单备份场景

    自己写的一个目录同步工具,可以从源目录向目标目录同步内容,适合简单文件夹备份。 使用方法: 1. 解压后将sync_folders.exe和sync_folders.csv文件放到同一目录 2. 用文本工具打开sync_folders.csv,配置需要同步...

    Python库 | heaserver_folders-1.0.0a18-py3-none-any.whl

    资源分类:Python库 所属语言:Python 资源全名:heaserver_folders-1.0.0a18-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    自动化文件夹脚本程序,批量创建文件夹

    `create_folders`函数接受两个参数:要创建的文件夹数量和文件夹名列表。在示例中,我们用列表推导式生成了从'folder1'到'folder5'的文件夹名。 标签“自动化”表明了这个脚本的目标是减少手动操作,提高效率。...

    Sync_Folders_Pro_4.3.1_MAS__TNT__xclient.info.dmg.zip

    Sync Folders 是一款Mac上的文件夹同步工具,最大的特点是简单易用,支持及时同步、计划同步和手动同步等,还支持文件过滤,除了本地磁盘外,也支持移动硬盘、U盘等外部存储和网络存储

    CreateFiles_unity创建文件夹_

    在Unity引擎中,创建文件夹是一项基础但至关重要的任务,特别是在构建游戏或...了解每个文件夹的用途并正确创建它们,可以极大地提高开发效率。通过编写C#脚本,你可以实现一键创建常用文件夹,使得项目设置更加便捷。

    Android程序开发之permission教程pdf版最新版本

    Live folders则是能够让用户直接在桌面上看到文件夹内容的实时更新,提升了用户体验。 教程还可能讲解蓝牙功能的改进。在Android 1.5中,蓝牙通信的稳定性和兼容性得到了提升,开发者可以更方便地实现蓝牙设备之间...

    create_lecture_folders:课程文件夹创建工作的自动化

    在IT行业中,自动化是提升效率的关键工具之一,尤其是在处理重复性任务时。"create_lecture_folders"项目就是这样一个例子,它旨在自动化的完成课程文件夹的创建工作。这个项目使用了Python编程语言,使得我们可以...

    chrome文件缓存路径设置工具v3

    - 修改设置后,已有的旧缓存文件不会自动转移到新位置,需要手动清理旧的缓存文件夹。 - 如果遇到任何问题,可以参考说明.txt文件中的指导,或寻求专业技术人员的帮助。 通过正确使用Chrome文件缓存路径设置工具v3...

    rainbow_folders

    "Rainbow Folders" 是一个实用工具,它允许用户自定义电脑中文件夹的颜色,以实现更加个性化和高效的文件管理。这个程序的核心功能是通过改变文件夹图标背景颜色,使得在众多文件夹中能快速识别出特定的文件夹,这...

Global site tag (gtag.js) - Google Analytics