1,自己封装的一个简单的Class:

public class ShareSample {    /**     * 获得分享列表(简单实现,只是把核心的东西写了写。不是太实用)     * **/    public void getShareList(final String title,final String content,final Activity mActivity)    {        final Map<String,ResolveInfo> appInfo =new HashMap<String, ResolveInfo>();        List<ResolveInfo> appList=getShareTargets(mActivity);        final String[] items;        if(appList.size()>0){            for (int i = 0; i < appList.size(); i++) {                ResolveInfo tmp_ri=(ResolveInfo)appList.get(i);                //ActivityInfo tmp_ai=tmp_ri.activityInfo;                ApplicationInfo apinfo=tmp_ri.activityInfo.applicationInfo;                String tmp_appName = apinfo.loadLabel(mActivity.getPackageManager()).toString();                //这里就做了一个简单的得到应用名称判断, 实际情况根据 ResolveInfo 这东东 可以得到很多很多有用的东东哦。                if(!tmp_appName.equals("微博"))                {                    continue;                }                appInfo.put(tmp_appName,tmp_ri);            }            items=new String[appInfo.size()];            int j=0;            for (Map.Entry<String,ResolveInfo> myEntry : appInfo.entrySet()) {                 items[j]=myEntry.getKey();                j++;             }                     }        else{            Toast.makeText(mActivity.getApplicationContext(),"暂无分享应用", Toast.LENGTH_SHORT).show();            return;        }        if(appInfo.size()<1)        {            Toast.makeText(mActivity.getApplicationContext(),"暂无分享应用", Toast.LENGTH_SHORT).show();            return;        }        /**         * 这里用对话框简单的一个实现,实际开发中应该要单独抽取出来封装成一个自定义的列表。         *          * **/        new AlertDialog.Builder(mActivity).setTitle("选择分享")         .setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {         public void onClick(DialogInterface dialog, int item) {                         CreateShare(title,content,mActivity,appInfo.get(items[item]));            //CreateShare(title,content,mActivity);            dialog.cancel();         }         }).show();//显示对话框            }        /**     * 实现自定义分享功能(主要就是启动对应的App)     * **/    private void CreateShare(String title,String content ,Activity activity,ResolveInfo appInfo) {                  try        {            Intent shareIntent=new Intent(Intent.ACTION_SEND);             shareIntent.setComponent(new ComponentName(appInfo.activityInfo.packageName, appInfo.activityInfo.name));               //这里就是组织内容了,              // shareIntent.setType("text/plain");              shareIntent.setType("image/*");              shareIntent.putExtra(Intent.EXTRA_TEXT, content);               shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);               activity.startActivity(shareIntent);                      }catch (Exception e) {            e.printStackTrace();            // TODO: handle exception        }                           }      /**     * 默认分享列表(网上一大堆)     * **/    private void CreateShare(String title,String content ,Activity activity) {          Intent intent=new Intent(Intent.ACTION_SEND);        intent.setType("image/*");           intent.putExtra(Intent.EXTRA_SUBJECT, title);           intent.putExtra(Intent.EXTRA_TEXT, content);            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);           activity.startActivity(Intent.createChooser(intent, title));            }    /**     * 获得所有带Intent.ACTION_SEND的应用列表。 ResolveInfo 这个东东真不错。     * **/    private List<ResolveInfo> getShareTargets(Activity activity){        Intent intent=new Intent(Intent.ACTION_SEND,null);        intent.addCategory(Intent.CATEGORY_DEFAULT);        intent.setType("text/plain");        PackageManager pm=activity.getPackageManager();        return pm.queryIntentActivities(intent,PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);        }}

2.测试调用:

 public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        try        {          ShareSample sample =new ShareSample();          sample.getShareList("分享标题", "要分享的内容哦。呵呵", this);        }catch (Exception e) {            e.printStackTrace();            // TODO: handle exception        }}

3.应用加入系统分享列表(这个在网上Copy的木有验证过)
只需在AndroidManifest.xml中加入以下代码:

<activity android:name=".SharePage" android:label="分享到微博">    <intent-filter>        <action android:name="android.intent.action.SEND" />        <category android:name="android.intent.category.DEFAULT" />        <data android:mimeType="image/*" />    </intent-filter></activity>

4.小结:

不是太复杂的东西。但如果不知道ResolveInfo 这个东东怎么用就不太好搞了。(偶开始就不知道所以纠结了一下下。Android 小菜菜)

更多相关文章

  1. Volley二次封装,实现网络请求缓存
  2. Android(安卓)开发建立经验分享...
  3. android 在分享时判断是否安装QQ,微信客户端
  4. Android实现列表时间轴
  5. android之日志打印管理封装类
  6. Android(安卓)ListView自定义和选中效果
  7. android网络请求框架Volley(二)
  8. android微信纯图片分享和网页分享
  9. [Android源码]Android源码之高仿飞鸽传书WIFI热点搜索与创建(一)

随机推荐

  1. Android的MotionEvent事件分发机制
  2. Android开发之EditText多行文本输入
  3. android文件存储初识
  4. Android7.0下调用相机闪退的解决方案
  5. 关于android 4.4 以上写入外部存储卡
  6. Android(安卓)如何远端调试framework和AP
  7. Android:java.lang.OutOfMemoryError: Fa
  8. android servicemanager与binder源码分析
  9. Android性能优化之一:ViewStub
  10. 基于Eclipse的Android JNI层测试应用开发