现在的位置: 首页 > 综合 > 正文

【android学习之十七】——特色功能2:桌面组件(快捷方式,实时文件夹)

2013年08月09日 ⁄ 综合 ⁄ 共 3278字 ⁄ 字号 评论关闭
  二、桌面组件

   1.快捷方式

          Android手机上得快捷方式的意思可以以我们实际PC机器上程序的快捷方式来理解。而android中要建立某一个程序快捷方式,只需要长按桌面或者点击Menu按钮——》添加,选择“Shortcuts”或者“快捷方式”,如下图,即可添加自己程序的快捷方式。

【注意】,而通过程序中,如何来控制自己开发的程序,让其支持快捷方式呢,就要在<intent-filter>里增加对于的<Action>如:

<activity android:label="@string/app_name"android:name=".ShortcutsActivity" >
  <intent-filter >
       <action android:name="android.intent.action.MAIN" />
	   <action android:name="android.intent.action.CREATE_SHORTCUT"/>
      <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>

当然以上过程是基础只是通过上述配置,让自己Activity能够在触发增加快捷方式的这个动作时,能够找到我们程序的Activity进行相应,而程序快捷方式的名字,图标,事件等都可以在Activity里进行设置。本实例Activity代码如下:

public class ShortcutsActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //要添加的快捷方式的Intent
        Intent addShortcut;
        //判断是否要添加快捷方式
        if(getIntent().getAction().equals(Intent.ACTION_CREATE_SHORTCUT)){
        	addShortcut = new Intent();
        	//设置快捷方式的名字
        	addShortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, "发送邮件");
        	//构建快捷方式中专门的图标
        	Parcelable icon = Intent.ShortcutIconResource.fromContext(this, R.drawable.mail_edit);
        	//添加快捷方式图标
        	addShortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
        	//构建快捷方式执行的Intent
        	Intent mailtoIntent = new Intent(Intent.ACTION_SENDTO,Uri.parse("mailto:jercy@163.com" ));
        	//添加快捷方式Intent
        	addShortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, mailtoIntent);
        	setResult(RESULT_OK, addShortcut);
        }else{
        	//取消
        	setResult(RESULT_CANCELED);
        }
        
        finish();
    }
}

 

以上代码中,需要着重说明 : Parcelable icon = Intent.ShortcutIconResource.fromContext(this, R.drawable.mail_edit);

Android中提供专门的构建快捷方式图标的方式。

 

main.xml文件没有变动,对于的string.xml里:

<string name="hello">创建桌面快捷方式!</string>
<string name="app_name">桌面快捷方式</string>


 

实例效果如下:

 

左图:在点击添加快捷方式后,选择相关程序;

右图:点击我们的应用程序后,桌面显示快捷方式,即为上述程序设置名字与图标。
 

2.实时文件夹(LiveFolders)

    实时文件夹,这个功能在之前的NotePad实例中已经实现,其显示的内容是实时更新的,不再你需要去单独打开相关程序,就能够查看,比如:查看邮件,联系人等。

【注意】:实时文件夹本身不存储信息,都是以映射方式查看其ContentProvider所指向的数据信息,并可以自定义显示格式,其间源数据发生变化,也可以实时更新显示内容。 

而与上面快捷方式一样,同样需要配置相关Action

<activity    android:label="@string/app_name"android:name=".LiveFoldersActivity" >
   <intent-filter >
     <action android:name="android.intent.action.MAIN" />
     <action android:name= "android.intent.action.CREATE_LIVE_FOLDER" /> 
     <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>

同样对应Activiy:

public class LiveFoldersActivity extends Activity {
    /** Called when the activity is first created. */
    @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_CALL, ContactsContract.Contacts.CONTENT_URI));
        	//设置实时文件件的名称
        	intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_NAME, "自己电话本");
        	//设置实时文件夹的图标
        	intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_ICON, Intent.ShortcutIconResource.fromContext(this, R.drawable.contacts));
        	//设置显示模式为列表模式
        	intent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_DISPLAY_MODE, LiveFolders.DISPLAY_MODE_LIST);
        	setResult(RESULT_OK, intent);
        }else{
        	setResult(RESULT_CANCELED);
        }
        
        finish();
    }
}

 

实例效果:

  

左图:在点击添加文件夹后,选择相关程序;

中图:点击我们的应用程序后,桌面显示实时文件夹图标。

右图:点击“自己电话本”图标后显示对应的效果图,显示通讯录里的信息。

 

还有一个桌面组件Widget,这个后面进行补充吧,总结上述两个小功能,还是比较简单实用的。

 

抱歉!评论已关闭.