`
gryphone
  • 浏览: 433701 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Livefolder 以桥的形式存在

阅读更多

Livefolder

 

[功能]

之所以说"桥" 是因为:

 

Livefolder 功能并没有开始就具备 而是后期加上去的 这就有了一个问题:早期的ContentProvider 里面的方法 query() 并没有提供对 Livefolder 的支持 而 Livefolder 的query() 是要含有指导列明的 这二者不可协调 要么改动ContentProvider  要么不用Livefolder 为了解决这个问题 我想想出了一个办法

 

 

 1. 现有一个比较早的ContentProvider :CProviderMin 其action 为:

写道
<provider android:name="CProviderMin"
android:authorities="com.andriod.providers.countrycode" />

 

 

 

2. 现在想开发对CProviderMin 的Livefolder 但是又不想改动CProviderMin 的代码  于是我新加了一个ContentProvider: LivefolderProvider 其action 为:

写道
<provider android:name="LivefolderProvider"
android:authorities="com.andriod.providers.LivefolderProvider.countrycode" />

 

 

关键是:实现 LivefolderProvider  的 query()  要求:

写道
1. 通过 ContentResolver 来访问目标ContentProvider:CProviderMin 并含有 Livefolder 所需的指定列明

2. 把 上面的 query() 结果返回

 

 

其query() 实现如下:

public Cursor query(Uri uri, String[] projection, String selection,
			String[] selectionArgs, String sortOrder) {
		// TODO Auto-generated method stub
		
        String[] myProjection = {
        		CHelper.SQLiteColumn.ID + " AS " + LiveFolders._ID,
        		CHelper.SQLiteColumn.COUNTRY + " AS " + LiveFolders.NAME,
        		CHelper.SQLiteColumn.CODE + " AS " + LiveFolders.DESCRIPTION
        };

        ContentResolver resolver = this.getContext().getContentResolver();
        
        Uri u2 = Uri.parse("content://"+"com.andriod.providers.countrycode"+"/item");
		
        Cursor c = resolver.query(u2, myProjection, null, null, null);
        return c;
	}

 

 

 

3. 准备 "android.intent.action.CREATE_LIVE_FOLDER" 的 Activity  如下:

public class CreateLivefolder extends Activity {
	public static final Uri LIVE_FOLDER_URI = 
        Uri.parse("content://" + "com.andriod.providers.countrycode" + "/livefolder");
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        if (getIntent().getAction()
                .equals(LiveFolders.ACTION_CREATE_LIVE_FOLDER)) {
            
            Intent intent = new Intent();

            intent.setData(LIVE_FOLDER_URI);
            intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_NAME,
                    "CountryLivefolder");
            intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_ICON,
                    Intent.ShortcutIconResource.fromContext(this,
                            R.drawable.icon));
            intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_DISPLAY_MODE, 
                    LiveFolders.DISPLAY_MODE_LIST);
            
            setResult(RESULT_OK, intent);
        } else {
            setResult(RESULT_CANCELED);
        }
        finish();
    }
}

 

关键是: 把其所使用的 ContentProvider 通过 setData() 指向 LivefolderProvider 即可

 

 

 

4. emulator 运行截图:略 因为要睡觉了

 * ContentResolver 截图:

 

* Livefolder 截图:

 

 

之所以写这篇blog 是因为在一个论坛提过这个弊端 所以尝试一把 因为这仅仅是把自己想法实现一些 而且也不知道有没有用 所以说得不是太详细 有需求的朋友 请回复一下 我再细说.

 

 

题外话: 因为这个想法很有"桥"的感觉 所以以这个命名!

分享到:
评论

相关推荐

    shortcut+livefolder

    快捷方式在Windows中通常以.lnk文件扩展名存在,它实际上是一个指向实际文件或位置的指针,而不是实际内容的副本。创建快捷方式可以通过右键点击目标文件或程序,然后选择“发送到”&gt;“桌面(创建快捷方式)”。快捷...

    android2.3 launcher分析二

    在深入了解LiveFolder之前,我们先来看看Launcher的启动流程,这对于理解LiveFolder如何融入整个系统至关重要。 1. **AndroidRuntime**:系统的运行环境初始化。 2. **LauncherApplication.onCreate()**:Launcher...

    android的launcher分析.pdf

    LiveFolder 的实现等方面。 一、主要文件和类 1. Launcher.java:Launcher 的主要 Activity,负责加载和显示 Launcher 的界面。 2. DragLayer.java:Launcher 布局的根视图,负责拖动和事件处理。 3. ...

    疯狂Android讲义(第2版)源代码 第14章~第17章

    14.5、实时文件夹(LiveFolder): 第15章、传感器应用开发 15.2、Android的常用传感器:方向传感器Orientation; 磁场传感器Magnetic Field; 温度传感器Temperature; 光传感器Light; 压力传感器Pressure; 第16章...

    Android_launcher的源码详细分析.pdf

    LiveFolder.java 是系统自带的文件夹,从系统中创建出的文件夹,例如联系人的文件夹等。 11. DeleteZone.java:删除框,实现了 DropTarget 和 DragListener 两个接口。 DeleteZone.java 是删除框,实现了 ...

    实时文件夹示例程序

    2. **Namespace Extension**:实时文件夹是命名空间扩展的一种形式,它扩展了Windows资源管理器的文件系统视图,使用户能够在文件夹树中看到自定义的内容。 3. **IShellFolder Interface**:开发实时文件夹的核心是...

    android ophone开发完全讲义源码ch15.3

    1. **动态内容管理(ch15_livefolder)**:Live Folders是Android的一项特性,它允许在桌面或者其他UI位置创建实时更新的文件夹,显示来自特定数据源的内容。在OPhone上,Live Folders可能涉及到更复杂的系统集成和...

    android的launcher分析

    10. **LiveFolder.java**: 系统自动生成的文件夹,如联系人或音乐文件夹,它们动态地显示特定类型的数据。 11. **DeleteZone**: 当拖动item靠近时,DeleteZone会显示,允许用户删除item。在非活动状态时,它是不...

    Launcher的源码详细分析

    10. **LiveFolder.java**:系统自动生成的文件夹,如联系人文件夹,直接从系统数据中创建。 通过对这些核心组件的分析,我们可以了解到Android Launcher如何处理用户的触摸输入,如何组织和显示桌面图标,以及如何...

    android的launcher分析--详细

    10. **LiveFolder.java**: 系统自动生成的文件夹,如联系人或音乐,它们动态地从系统数据中获取内容。 11. **DeleteZone**: 用于接收被拖动到此处的item,通常在屏幕边缘显示,当用户拖动item到删除框时,item会被...

    Laucher修改

    - **AddAdapter**:用于添加桌面元素的适配器,管理各类列表项如LiveFolder、Widget、Shortcut和Wallpaper。 - **AllAppsGridView**:继承自`GridView`,展示所有可启动应用的图标列表。 - **ApplicationInfo**:...

    android活动文件夹

    - `LiveFolder_Demo` 文件很可能包含了 `LiveFolderProvider.java`,这是核心的 ContentProvider 类,负责提供数据和响应系统请求。 - 可能还有 `LiveFolderAdapter.java`,这是一个自定义的 `CursorAdapter`,...

    launcher初学者

    - 如果是长按拖拽,则不将事件传递给子视图,而是直接交给`onTouchEvent()`处理,以实现item的移动。 - 如果不是拖拽操作,则将事件传递给目标视图进行进一步处理。 - **扩展性**:通过修改`onInterceptTouchEvent...

    Android实例代码

    14.5、实时文件夹(LiveFolder): 第15章、传感器应用开发 15.2、Android的常用传感器:方向传感器Orientation; 磁场传感器Magnetic Field; 温度传感器Temperature; 光传感器Light; 压力传感器Pressure; 第16章、...

    疯狂Android讲义(第2版)源代码 第6章~第9章

    14.5、实时文件夹(LiveFolder): 第15章、传感器应用开发 15.2、Android的常用传感器:方向传感器Orientation; 磁场传感器Magnetic Field; 温度传感器Temperature; 光传感器Light; 压力传感器Pressure; 第16章...

    疯狂Android讲义源码

     14.5 实时文件夹(LiveFolder) 539  14.5.1 使用实时文件夹显示  ContentProvider的数据 540  14.6 本章小结 545  第15章 传感器应用开发 546  15.1 利用Android的传感器 547  15.1.1 开发传感器应用 547 ...

Global site tag (gtag.js) - Google Analytics