▼Androidメモ▼
ライブフォルダの作成


ライブフォルダを作成する。


ライブフォルダの設定

  1. ホームのウィジェットのない空き領域を長押し。
  2. ポップアップ「Folders」を選択。
  3. 設定したいライブフォルダを選択。
  4. ホームにライブフォルダが追加されるので、それをタップ。

ソースコード
LiveFolderEx.java
package net.npaka.livefolderex;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.LiveFolders;

//ライブフォルダの生成
public class LiveFolderEx extends Activity {
    //生成時に呼ばれる
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent=getIntent();
        String action=intent.getAction();        
        if (LiveFolders.ACTION_CREATE_LIVE_FOLDER.equals(action)) {
            setResult(RESULT_OK, createLiveFolder(this,
                LiveFolderProvider.CONTACTS_URI,//Uri
                "LiveFolderEx",                 //名前
                R.drawable.icon));              //アイコン
        } else {
            setResult(RESULT_CANCELED);
        }
        finish();
    }
    
    //ライブフォルダの生成
    private Intent createLiveFolder(
        Context context,Uri uri,String name,int icon) {
        Intent intent = new Intent();
        intent.setData(uri);
        intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_NAME,name);
        intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_ICON,
            Intent.ShortcutIconResource.fromContext(context,icon));
        intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_DISPLAY_MODE,
            LiveFolders.DISPLAY_MODE_LIST);
        return intent;
    }
}

LiveFolderProvider.java
package net.npaka.livefolderex;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.net.Uri;
import android.provider.BaseColumns;
import android.provider.LiveFolders;

//ライブフォルダプロバイダ
public class LiveFolderProvider extends ContentProvider {
    //URL
    public static final String AUTHORITY="net.npaka.livefolderex.test";
    public static final Uri CONTACTS_URI=
        Uri.parse("content://"+AUTHORITY+"/test");
        
    //生成時に呼ばれる
    @Override
    public boolean onCreate() {
        return true;
    }

    //カーソル
    private static final String[] CURSOR_COLUMNS=new String[] {
        BaseColumns._ID,
        LiveFolders.NAME,
        LiveFolders.DESCRIPTION,
        LiveFolders.INTENT,
        LiveFolders.ICON_PACKAGE,
        LiveFolders.ICON_RESOURCE
    };
    
    //クエリー実行時に呼ばれる
    public Cursor query(Uri uri,String[] projection,String selection,
        String[] selectionArgs,String sortOrder) {
        android.util.Log.e("","flagA>"+uri);
        //マトリックスカーソル
        MatrixCursor mc=new MatrixCursor(CURSOR_COLUMNS);
        
        //Webページの表示
        mc.addRow(new Object[]{
           0,                             //ID
           "Webページの表示",             //名前
           "Webページを表示する",         //詳細
            Uri.parse("http://npaka.net/"),//インテント
            getContext().getPackageName(), //アイコンパッケージ
            R.drawable.icon                //アイコンリソース
        });
        
        //ダイアラーの表示
        mc.addRow(new Object[]{
            1,                            //ID
            "ダイアラーの表示",           //名前
            "ダイアラーを表示する",       //詳細
            Uri.parse("tel:117"),         //インテント
            getContext().getPackageName(),//アイコンパッケージ
            R.drawable.icon               //アイコンリソース
        });    
        return mc;
    }

    //更新時に呼ばれる(未使用)
    @Override    
    public int update(Uri uri,ContentValues values,String selection,String[] selectionArgs) {
        return 0;
    }

    //挿入時に呼ばれる(未使用)
    @Override
    public Uri insert(Uri uri,ContentValues initialValues) {
        return null;
    }

    //削除時に呼ばれる(未使用)
    @Override
    public int delete(Uri uri,String selection,String[] selectionArgs) {
        return 0;
    }

    //種別の取得(未使用)
    @Override
    public String getType(Uri uri) {
        return null;
    }
}


AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="net.npaka.livefolderex"
    android:versionCode="1"
    android:versionName="1.0">
    <application 
        android:icon="@drawable/icon" 
        android:label="@string/app_name">

        <!--ライブフォルダ-->
        <activity
            android:name="LiveFolderEx"
            android:label="LiveFolderEx"
            android:icon="@drawable/icon">
            <intent-filter>
                <action android:name="android.intent.action.CREATE_LIVE_FOLDER" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        
        <!--ライブフォルダプロバイダ-->        
        <provider android:authorities="net.npaka.livefolderex.test"
            android:multiprocess="true"
            android:name="LiveFolderProvider" />
        
    </application>
    <uses-sdk android:minSdkVersion="7" />
</manifest> 

−戻る−