zoukankan      html  css  js  c++  java
  • Android之实时文件夹

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

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

    实时文件夹的键值与数据类型 

     

    其中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>

    运行结果

    1、2、  3、

  • 相关阅读:
    详细的描述一个测试活动完整的过程
    黑盒测试的测试用例常见设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。
    测试计划工作的目的是什么?测试计划文档的内容应该包括什么?其中哪些是最重要的?
    redo log 有什么作用?
    Spring的简介和优点?
    java的语法基础(二)
    相对于Statement,PreparedStatement的优点是什么?
    MyBatis 的好处是什么?
    python中字符串的编码和解码
    相对于Statement,PreparedStatement的优点是什么?
  • 原文地址:https://www.cnblogs.com/linjiqin/p/1967469.html
Copyright © 2011-2022 走看看