Android:新浪微博拉起客户端分享——完美实现同时分享图片和文字(Intent.ACTION_SEND)

新浪微博拉起客户端分享——完美实现同时分享图片和文字(Intent.ACTION_SEND)

点击事件后处理:


private void  share(String content, Uri uri){
                                 if (AppUtils.isAppExist(mContext, "com.sina.weibo")) {
				Log.i("TAG", "----------------com.sina.weibo.ComposerDispatchActivity");
				Intent intent = new Intent(Intent.ACTION_SEND);
				intent.setPackage("com.sina.weibo");  
//				intent.setClassName("com.sina.weibo", "com.sina.weibo.ComposerDispatchActivity");
				if (uri == null ) {
					intent.setType("text/plain"); // 纯文本
				} else {
					File f = new File(“/mnt/sdcard/”);
					if (f != null && f.exists() && f.isFile()) {
						intent.setType("image/*");
						Uri u = Uri.fromFile(f);
						intent.putExtra(Intent.EXTRA_STREAM, u);
					}
				}
				intent.putExtra(Intent.EXTRA_SUBJECT, mTitle);
				intent.putExtra(Intent.EXTRA_TEXT, mShareDetail + "!点击:" + mWebUrl);
//				intent.putExtra("com.weibo.android.content", mTitle);
//				intent.putExtra("com.sina.weibo.android.content", mShareDetail + "!点击:" + mWebUrl);
				mContext.startActivity(intent);
			} else {
				Toast.makeText(ShareActivity.this, "您尚未安装新浪微博", Toast.LENGTH_SHORT).show();
			}
}

简直把我坑惨了,一直以为通过系统的分享需要知道第三方接收action的类,本文对应的就是ComposerDispatchActivity,实际上是没有必要进行intent.setClassName("com.sina.weibo", "com.sina.weibo.ComposerDispatchActivity");这个方式来实现的,因为你不知道第三方接收的键值是什么,直接

				Intent intent = new Intent(Intent.ACTION_SEND);
				intent.setPackage("com.sina.weibo");  
这样就搞定了!!!!




不过最好加上try catch,因为可能No Activity found to handle Intent { act=android.intent.action.SEND flg=0x1 pkg=com.sina.weibo (has clip) (has extras) }

如下:


if (AppUtils.isAppExist(mContext, "com.sina.weibo")) {
				
				//可能No Activity found to handle Intent { act=android.intent.action.SEND flg=0x1 pkg=com.sina.weibo (has clip) (has extras) }
				try {
					<pre name="code" class="javascript">Intent intent = new Intent(Intent.ACTION_SEND);
				intent.setPackage("com.sina.weibo");  
//				intent.setClassName("com.sina.weibo", "com.sina.weibo.ComposerDispatchActivity");
				if (uri == null ) {
					intent.setType("text/plain"); // 纯文本
				} else {
					File f = new File(“/mnt/sdcard/”);
					if (f != null && f.exists() && f.isFile()) {
						intent.setType("image/*");
						Uri u = Uri.fromFile(f);
						intent.putExtra(Intent.EXTRA_STREAM, u);
					}
				}
				intent.putExtra(Intent.EXTRA_SUBJECT, mTitle);
				intent.putExtra(Intent.EXTRA_TEXT, mShareDetail + "!点击:" + mWebUrl);
//				intent.putExtra("com.weibo.android.content", mTitle);
//				intent.putExtra("com.sina.weibo.android.content", mShareDetail + "!点击:" + mWebUrl);
				mContext.startActivity(intent);
} catch (Exception e) {Toast.makeText(ShareActivity.this, "分享失败", Toast.LENGTH_SHORT).show();e.printStackTrace();}} else {Toast.makeText(ShareActivity.this, "您尚未安装新浪微博", Toast.LENGTH_SHORT).show();}

 

这样就防止异常了

转载注明出处:http://blog.csdn.net/zbjdsbj/article/details/41119683

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值