Android编程实现自定义分享列表ACTION_SEND功能的方法

  

本文实例讲述了Android编程实现自定义分享列表ACTION_SEND功能的方法。分享给大家供大家参考,具体如下:

  

看到最近都在做自定义的东西,因为比较灵活,还可以摆脱系统自身不怎么漂亮的UI,(大家都懂得)所以自己也做了下自定义的分享列表,用PopupWindow的方式弹出。

  

先上效果图:

  

 Android编程实现自定义分享列表ACTION_SEND功能的方法

  

<强> 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 () {   ListshareAppInfos=new ArrayList ();   PackageManager PackageManager=getPackageManager ();   ListresolveInfos=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);   List

Android编程实现自定义分享列表ACTION_SEND功能的方法