本文實例講述了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>
運行結果
希望本文所述對大家的Android程序設計有所幫助。
新聞熱點
疑難解答
圖片精選