本文实例讲述了Android编程实现自定义分享列表ACTION_SEND功能的方法。分享给大家供大家参考,具体如下:
看到最近都在做自定义的东西,因为比较灵活,还可以摆脱系统自身不怎么漂亮的UI,(大家都懂得)所以自己也做了下自定义的分享列表,用PopupWindow的方式弹出。
先上效果图:
<强> 1,布局:强>
popup_share.xml
& lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比; & lt; LinearLayout xmlns: android=" http://schemas.android.com/apk/res/android " android: layout_width="宽和" android: layout_height=皐rap_content”比; & lt;列表视图 android: id=癅 + id/share_list” android:背景=" # 2 f4f4f " android: fadingEdge="没有" android: layout_width="宽和" android: layout_height=" wrap_content " android: cacheColorHint=" # 00000000 " android:分频器=" # E2DD75” android: dividerHeight=" 1.0下降” android: headerDividersEnabled=" true " android: footerDividersEnabled=" false "/比; & lt;/LinearLayout> >之前popup_share_item.xml
& lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比; & lt; LinearLayout xmlns: android=" http://schemas.android.com/apk/res/android " android:重力=" center_vertical " android: layout_width=" wrap_content " android: layout_height=" wrap_content " 在android:填充=" 2.0下降”; & lt; ImageView android: id=癅 + id/share_item_icon” android: layout_width=" 32.0下降” android: layout_height=" 32.0下降” android: layout_marginLeft=" 3.0下降” android: scaleType=" fitXY "/比; & lt; TextView android: id=癅 + id/share_item_name” android:重力="中心" android: layout_width=" wrap_content " android: layout_height=" wrap_content " android:文本="分享” android:输入textColor=" @color/白” android:单行模式=" true " android: textSize=" @dimen/s_size” android: layout_marginLeft=" 3.0下降” android: layout_marginRight=" 3.0浸”/祝辞 & lt;/LinearLayout> >之前<强> 2,查询手机内所有支持分享的应用列表强>
公共ListgetShareApps(上下文语境){ List 宾州=new ArrayList (); 目的意图=new意图(意图。ACTION_SEND, null); intent.addCategory (Intent.CATEGORY_DEFAULT); intent.setType (" text/plain”);//intent.setType (" */* "); PackageManager pManager=context.getPackageManager (); 宾州=pManager.queryIntentActivities(意图, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT); 返回mapp; } >之前 注:ApplicationInfo是从一个特定的应用得到的信息。这些信息是从相对应的Androdimanifest.xml的& lt;application>标签中收集到的。
ResolveInfo这个类是通过解析一个与IntentFilter相对应的意图得到的信息。它部分地对应于从AndroidManifest.xml的& lt;intent>标签收集到的信息。
得列到名单表,我自建的AppInfo类,自己建一个就行
私人ListgetShareAppList () { List shareAppInfos=new ArrayList (); PackageManager PackageManager=getPackageManager (); List resolveInfos=getShareApps (mContext); 如果(null==resolveInfos) { 返回null; 其他}{ (ResolveInfo ResolveInfo: resolveInfos) { AppInfo AppInfo=new AppInfo (); appInfo.setAppPkgName (resolveInfo.activityInfo.packageName);//showLog_I(标签,”pkg>“+ resolveInfo.activityInfo。packageName +”; name>“+ resolveInfo.activityInfo.name); appInfo.setAppLauncherClassName (resolveInfo.activityInfo.name); appInfo.setAppName (resolveInfo.loadLabel (packageManager) .toString ()); appInfo.setAppIcon (resolveInfo.loadIcon (packageManager)); shareAppInfos.add (appInfo); } } 返回shareAppInfos; } >之前 <强> 3,弹出PopupWindow的实现强>
私人空间initSharePopupWindow(查看父){ PopupWindow sharePopupWindow=零; 视图视图=零; ListView shareList=零; 如果(null==sharePopupWindow) {//加载布局文件 视图=LayoutInflater.from (DetailExchangeActivity.this) .inflate (R.layout.popup_share, null); shareList=(视图)view.findViewById (R.id.share_list); ListAndroid编程实现自定义分享列表ACTION_SEND功能的方法