在這個(gè)版本功能涉及到Android分享方式的變更框往,需求要求:
分享只支持新浪微博、微信闯捎,其他方式均去掉椰弊。
為了更好的測(cè)試還是要看下Android分享實(shí)現(xiàn)分享的方式,然后才能更好地評(píng)估測(cè)試時(shí)間和設(shè)計(jì)測(cè)試用例~先看下Android原生的分享方式吧瓤鼻。
Android最常見(jiàn)的分享方式是用intent在程序之間發(fā)送和接收數(shù)據(jù)秉版,創(chuàng)建一個(gè)intent時(shí),必須要指定intent將要觸發(fā)的操作茬祷。Android進(jìn)行分享時(shí)使用的intent操作是ACTION_SEND清焕,表示intent是把數(shù)據(jù)從一個(gè)activity發(fā)送給另一個(gè)。下面這段代碼就是Android原生分享的一個(gè)最簡(jiǎn)單的示例(分享文本內(nèi)容)祭犯。
Intent sendIntent = newIntent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "要分享的文字內(nèi)容");
sendIntent.setType("text/plain");
startActivity(sendIntent);
如果分享的不是文本內(nèi)容秸妥,可以修改setType里面的參數(shù)如"image/jpeg"分享圖片等。如果有一個(gè)程序匹配ACTION_SEND和text/plain類(lèi)型沃粗,Android系統(tǒng)會(huì)運(yùn)行它粥惧。如果超過(guò)一個(gè)程序匹配,系統(tǒng)會(huì)顯示一個(gè)對(duì)話(huà)框讓用戶(hù)選一個(gè)app最盅。如果為intent調(diào)用Intent.createChooser()突雪,Android會(huì)總是顯示選擇對(duì)話(huà)框起惕。
Intent sendIntent = newIntent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "要分享的文字內(nèi)容");
sendIntent.setType("text/plain");
startActivity(Intent.createChooser(sendIntent, getResources().getText(R.string.send_to)));
增加上對(duì)分享平臺(tái)的限制,代碼如下:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
List<ResolveInfo> resolveInfos = getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
if (resolveInfos.isEmpty()) {
return;
}
List<Intent> 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), "請(qǐng)選擇分享平臺(tái)");
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, "找不到該分享應(yīng)用組件", Toast.LENGTH_SHORT).show();
}
//startActivity(Intent.createChooser(intent, getTitle()));
}
private void addShareIntent(List<Intent> list,ActivityInfo ainfo) {
Intent target = new Intent(Intent.ACTION_SEND);
target.setType("text/plain");
target.putExtra(Intent.EXTRA_TEXT, "分享看看小可愛(ài)");
target.setPackage(ainfo.packageName);
target.setClassName(ainfo.packageName, ainfo.name);
list.add(target);
}
其實(shí)沒(méi)有很復(fù)雜~