新浪微博拉起客户端分享——完美实现同时分享图片和文字(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