1、Android,应用开发课程,*,Click to edit Master title,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,Android,应用程序开发,桌面组件,实时文件夹,一种桌面组件,用来显示,ContentProvider,提供的数据,不能直接显示,ContentProvider,的数据,需要利用代理,将异构的数据源整合成结构相同的数据,放入统一的,Cursor,中,实时文件夹,定义一个,LiveFolderActivity,在,IntentFilter,
2、中定义,action,为,:android.intent.action.CREATE_LIVE_FOLDER,这样,当用户添加实时文件夹时,会自动发出,action,为,”CREATE_LIVE_FOLDER”,的,Intent,于是由,LiveFolderActivity,来处理,实现,LiveFolderActivity,创建,Intent,设置,Data,为,ContentProvider,的,URI,注意,:,这个,ContentProvider,必须是专为实时文件夹定义的,.,如,:,显示联系人列表的,URI,为,:content:/contacts/live_folders/peo
3、ple,为,Intent,添加四个,Extra,信息,BASE_INTENT,基础,Intent,决定了实时文件夹的内容,NAME,名字 显示在桌面上,ICON,图标 调用,Intent.ShortcutIconResource.,fromContext(),来,获取资源图片,DISPLAY_MODE,显示模式 有,List,和,Grid,两种,调用,setResult(),返回,Intent,Intent i=,new Intent();,i.setData(Uri.,parse(content:/contacts/live_folders/people);,i.putExtra(LiveF
4、olders.,EXTRA_LIVE_FOLDER_BASE_INTENT,new Intent(Intent.,ACTION_VIEW,ContactsContract.Contacts.CONTENT_URI);,i.putExtra(LiveFolders.,EXTRA_LIVE_FOLDER_NAME,电话本,);,i.putExtra(LiveFolders.,EXTRA_LIVE_FOLDER_ICON,Intent.ShortcutIconResource.,fromContext(,this,R.drawable.png1);,i.putExtra(LiveFolders.,E
5、XTRA_LIVE_FOLDER_DISPLAY_MODE,LiveFolders.,DISPLAY_MODE_LIST);,setResult(,RESULT_OK,i);,快捷方式,与,PC,桌面的快捷方式概念类似,长按屏幕 选择添加快捷方式,下面的示例将介绍如何将应用添加到快捷方式列表中,快捷方式 示例,创建一个,ShortCutActivity,IntentFilter,中的,action,为,android.intent.action.CREATE_SHORTCUT,当用户点击添加快捷方式时,系统会发出,action,为,CREATE_SHORTCUT,的,Intent,实现,Sho
6、rtCutActivity,创建,Intent,为,Intent,添加三个,Extra,数据,EXTRA_SHORTCUT_NAME,显示在桌面上的快捷方式名称,EXTRA_SHORTCUT_ICON_RESOURCE,快捷方式的图标,调用,Intent.ShortcutIconResource.,fromContext(),来,获取资源图片,EXTRA_SHORTCUT_INTENT,用户点击快捷方式时,要执行的,Intent,Intent i=,new Intent();,i.putExtra(Intent.,EXTRA_SHORTCUT_NAME,发送邮件,);,i.putExtra(I
7、ntent.,EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.,fromContext(,this,R.drawable.mail_edit);,Intent mailto=,new Intent(Intent.,ACTION_SENDTO,Uri.parse(mailto:xxx);,i.putExtra(Intent.,EXTRA_SHORTCUT_INTENT,mailto);,setResult(,RESULT_OK,i);,finish();,ShortCutActivity,的代码,Widget,直接显示到桌面上的小
8、控件,定期更新,每个,Widget,就是一个广播接收器,显示的内容封装成,RemoteViews,对象,Widget,开发过程,(1),定义,RemoteViews,的布局文件,/res/layout/my_layout.xml,Widget,开发过程,(2),定义,Widget,的描述文件,/res/xml/mywidget.xml,桌面的每格宽度和高度为,74dip,Widget,开发过程,(3),定义一个类,MyWidgetProvider,继承,android.appwidget.,AppWidgetProvider (BroadcastReceiver,的子类,),覆盖,onUpda
9、te,方法,Widget,开发过程,(3),public void onUpdate(Context context,AppWidgetManager appWidgetManager,int appWidgetIds),RemoteViews views=,new RemoteViews(context.getPackageName(),R.layout.,my_layout);,views.setImageViewResource(R.id.,myImageView,R.drawable.png1);,for(int id:appWidgetIds),appWidgetManager.up
10、dateAppWidget(id,views);,Widget,开发过程,(4),在配置文件中,定义,MyWidgetProvider,附录,Android,常用权限,前缀,android.permission,SEND_SMS,发短信,READ_SMS,读短信,CALL_PHONE,打电话,SET_TIME_ZONE,设置时间,INTERNET,访问网络,CHANGE_NETWORK_STATE,改变网络状态,CHANGE_WIFI_STATE,改变,WIFI,状态,CAMERA,照相机,SET_WALLPAPER,设置壁纸,VIBRATE,允许震动,ACCESS_FINE_LOCATION
11、访问位置信息,BLUETOOTH,访问蓝牙设备,READ_CALENDAR,读取日历,READ_CONTACTS,读取联系人,WRITE_CONTACTS,修改联系人,RECORD_AUDIO,录音,MOUNT_UNMOUNT_FILESYSTEMS,在,SD,卡中创建或删除文件,WRITE_EXTERNAL_STORAGE,向,SD,卡中写入数据,READ_PHONE_STATE,读取电话状态,显示单位,px(pixels),像素,一般,HVGA,代表,320 x480,像素,这个用的比较多。,dip,或,dp(device independent pixels),设备独立像素,这个和设备硬件有关,一般为了支持,WVGA,、,HVGA,和,QVGA,推荐使用这个,不依赖像素。,sp(scaled pixels best for text size),比例像素,主要处理字体的大小,可以根据系统的字体自适应。,下面几个不太常用:,in,英寸,mm,毫米,pt,点,,1/72,英寸,为了适应不同分辨率,不同的像素密度,推荐使用,dip,,文字使用,sp,。,






