android指定分享到新浪微博

来源于:开源中国http://my.oschina.net/banxi/blog/91383


下面分享一个具体的应用场景:android指定分享到新浪微博

一般的分享我们是这样做的:

private void share() {
	Intent intent = new Intent(Intent.ACTION_SEND);
	intent.setType("text/plain");
	intent.putExtra(Intent.EXTRA_SUBJECT, "分享我的文章");
	intent.putExtra(
			Intent.EXTRA_TEXT,"我刚发表的文章,来看看吧,地址:http://aa.bb.cc/a.html");
	intent.putExtra(Intent.EXTRA_TITLE, "分享我的文章");
	String title = "分享我的文章给好友";

	Intent chooser = Intent.createChooser(intent, title);
	startActivity(chooser);
}

这段代码会弹出一个可以用于分享的选择器,然后选择某一项来分享。

但是我们需要直接分享到新浪微博呢?

首先,我们可以通在安装有新浪微博的设备上运行,

Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("text/plain");
    PackageManager pm = getPackageManager();
    List<ResolveInfo> list = pm.queryIntentActivities(intent, 0);

还得到所以可以用于分享的组件,然后不管是通过调试或者打印得出来,某你所想要分享的组件的信息。

如新浪微博的的包名为"com.sina.weibo"

于是可以通过判断包名,来打开指定的分享intent,代码如下:

PackageManager pm = getPackageManager();
		List<ResolveInfo> matches = pm.queryIntentActivities(intent,
				PackageManager.MATCH_DEFAULT_ONLY);
		String packageName = "com.sina.weibo";
		ResolveInfo info = null;
		for (ResolveInfo each : matches) {
			String pkgName = each.activityInfo.applicationInfo.packageName;
			if (packageName.equals(pkgName)) {
				info = each;
				break;
			}
		}
		if (info == null) {
			ToastUtils.showShort(context, "没有找到新浪微博");
			return;
		} else {
			intent.setClassName(packageName, info.activityInfo.name);
		}

		startActivity(intent);


 


猜你喜欢

转载自blog.csdn.net/AndyTsui/article/details/12177711