在这个版本功能涉及到Android分享方式的变更,需求要求:

分享只支持新浪微博、微信,其他方式均去掉。

为了更好的测试还是要看下Android分享实现分享的方式,然后才能更好地评估测试时间和设计测试用例~先看下Android原生的分享方式吧。
Android最常见的分享方式是用intent在程序之间发送和接收数据,创建一个intent时,必须要指定intent将要触发的操作。Android进行分享时使用的intent操作是ACTION_SEND,表示intent是把数据从一个activity发送给另一个。下面这段代码就是Android原生分享的一个最简单的示例(分享文本内容)。

Intent sendIntent = newIntent();sendIntent.setAction(Intent.ACTION_SEND);sendIntent.putExtra(Intent.EXTRA_TEXT, "要分享的文字内容");sendIntent.setType("text/plain");startActivity(sendIntent);

如果分享的不是文本内容,可以修改setType里面的参数如"image/jpeg"分享图片等。如果有一个程序匹配ACTION_SEND和text/plain类型,Android系统会运行它。如果超过一个程序匹配,系统会显示一个对话框让用户选一个app。如果为intent调用Intent.createChooser(),Android会总是显示选择对话框。

Intent sendIntent = newIntent();sendIntent.setAction(Intent.ACTION_SEND);sendIntent.putExtra(Intent.EXTRA_TEXT, "要分享的文字内容");sendIntent.setType("text/plain");startActivity(Intent.createChooser(sendIntent, getResources().getText(R.string.send_to)));

增加上对分享平台的限制,代码如下:

        Intent intent = new Intent(Intent.ACTION_SEND);                        intent.setType("text/plain");                        List resolveInfos = getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);                        if (resolveInfos.isEmpty()) {                            return;                        }                        List targetIntents = new ArrayList<>();                        for (ResolveInfo info : resolveInfos) {                            ActivityInfo ainfo = info.activityInfo;                            switch (ainfo.packageName) {                                case "com.tencent.mm":                                    addShareIntent(targetIntents, ainfo);                                    break;                                case "com.tencent.mobileqq":                                    addShareIntent(targetIntents, ainfo);                                    break;                                case "com.sina.weibo":                                    addShareIntent(targetIntents, ainfo);                                    break;                            }                        }                        if (targetIntents == null || targetIntents.size() == 0) {                            return;                        }                        Intent chooserIntent = Intent.createChooser(targetIntents.remove(0), "请选择分享平台");                        if (chooserIntent == null) {                            return;                        }                        chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetIntents.toArray(new Parcelable[]{}));                        try {                            startActivity(chooserIntent);                        } catch (android.content.ActivityNotFoundException ex) {                            Toast.makeText(SimpleListViewActivity.this, "找不到该分享应用组件", Toast.LENGTH_SHORT).show();                        }                        //startActivity(Intent.createChooser(intent, getTitle()));                    }                    private void addShareIntent(List list,ActivityInfo ainfo) {                        Intent target = new Intent(Intent.ACTION_SEND);                        target.setType("text/plain");                        target.putExtra(Intent.EXTRA_TEXT, "分享看看小可爱");                        target.setPackage(ainfo.packageName);                        target.setClassName(ainfo.packageName, ainfo.name);                        list.add(target);                    }

其实没有很复杂~

更多相关文章

  1. Socket Android手机客户端与PC服务端局域网内联测试
  2. Android AutoLayout全新的适配方式 堪称适配终结者
  3. Android数据传递相关内容概述
  4. Android Neon 优化方式讲解
  5. AndroidManifest.xml中的内容详解
  6. android 图片背景使用这种方式很爽
  7. android中取消ActionBar的两种方式

随机推荐

  1. the user data image is used by another
  2. Android(安卓)SystemClock 笔记
  3. delphi xe5 android 手机上使用sqlite
  4. Android消息机制简述(Java层)
  5. Android(安卓)view更改背景资源,padding消
  6. TSwitch 中文简繁显示支持(XE6 Android)
  7. openfire+asmack搭建的安卓即时通讯(四) 15
  8. Manifest.permission 这个类定义了androi
  9. iBackDoor(爱后门)和DroidBackDoor(安后
  10. Android(安卓)图片转动效果(一)