admin管理员组文章数量:1608851
项目中的分享用的友盟,但是发现分享图片的时候,微信好友,和qq空间是不能够直接分享图片的,分享的图片会转成一个url的形势。
但是要求必须分享出去一张图片。网上查询资料后发现微信好友可以通过谷歌的**ComponentName**指定另一个app中的activity。
搜索之后微信好友打开发送图片的配置,如下:
这里写代码片ComponentName comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareImgUI");
如果想分享一张图片就可以这么来写:
private static void shareWeChat(Bitmap bitmap,Context context){
String path=MyUnitls.getFileUrl(bitmap, false, context);
Uri uriToImage = Uri.fromFile(new File(path));
Intent shareIntent = new Intent();
ComponentName comp = new ComponentName("com.tencent.mm","com.tencent.mm.ui.tools.ShareImgUI");
shareIntent.setComponent(comp);
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);
shareIntent.setType("image/*");
context.startActivity(Intent.createChooser(shareIntent, "是否安装微信?"));
}
如果哪天腾讯把包名给改了,这样当然也是会失败的。
这是朋友圈的 ComponentName componentName = new ComponentName(“com.tencent.mm”, “com.tencent.mm.ui.tools.ShareToTimeLineUI”);
QQ的 ComponentName componentName = new ComponentName(“com.tencent.mobileqq”, “com.tencent.mobileqq.activity.JumpActivity “);
如果想直接分享文字信息也是可以的,只需改变携带参数,但是好像不能做到同时分享的
intent.putExtra(Intent.EXTRA_SUBJECT, “消息标题”);
intent.putExtra(Intent.EXTRA_TEXT, “消息内容”);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
接下来介绍获取app的包名跟入口的activity的方法
“`
public void test(){
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
PackageManager mPackageManager = this.getPackageManager();
List mAllApps = mPackageManager.queryIntentActivities(mainIntent, 0);
//按报名排序
Collections.sort(mAllApps, new ResolveInfo.DisplayNameComparator(mPackageManager));
for(ResolveInfo res : mAllApps){
//该应用的包名和主Activity
String pkg = res.activityInfo.packageName;
String cls = res.activityInfo.name;
Log.d("抓包","pkg_clspkg---" +pkg +" cls---" + cls);
}
}
把这段代码运行后,就可以在log中看到包名和入口了。
解决了微信,但是还有qq空间,可是只找到了qq空间APP的这种方式而没有qq直接启动的,查阅发现虽然QQ现在设置的QQ空间分享为统一样式,
不允许单独设置图片,但是也可以设置参数单独分享图片,设置如下
final Bundle params = new Bundle();
//本地地址一定要传sdcard路径,不要什么getCacheDir()或getFilesDir()
params.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL, iamgeid);
params.putString(QQShare.SHARE_TO_QQ_APP_NAME, “云镶健康+”);
params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_IMAGE);
params.putInt(QQShare.SHARE_TO_QQ_EXT_INT, QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN); //打开这句话,可以实现分享纯图到QQ空间
doShareToQQ(params,context);
public static void doShareToQQ(final Bundle params,final Activity context) {
// QQ分享要在主线程做
final Tencent mTencent;
mTencent = Tencent.createInstance(“你在qq上申请的id”, context);
ThreadManager.getMainHandler().post(new Runnable() {
@Override
public void run() {
if (null != mTencent) {
mTencent.shareToQQ(context, params, new IUiListener() {
@Override
public void onComplete(Object o) {
}
@Override
public void onError(UiError uiError) {
}
@Override
public void onCancel() {
}
});
}
}
});
}
qq空间接收的是手机图片的路劲,这样传递之后就解决了qq空间分享问题。
版权声明:本文标题:android 第三方分享图片 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1728554455a1163660.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论