Android 如何实现本地图片直接分享到微信、来往、QQ等,直接分享图片到指定应用

例如:要在app中直接分享图片到微信、来往等,而不调用他们的sdk

直接贴代码如下;

	public void shareImage(Bitmap bitmap) {
		try {
			Uri uriToImage = Uri.parse(MediaStore.Images.Media.insertImage(
					mContext.getContentResolver(), bitmap, null, null));
			Intent shareIntent = new Intent();
			shareIntent.setAction(Intent.ACTION_SEND);
			shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);
			shareIntent.setType("image/*");
			// 遍历所有支持发送图片的应用。找到需要的应用
			PackageManager packageManager = mContext.getPackageManager();
			List<ResolveInfo> resolveInfoList = packageManager
					.queryIntentActivities(shareIntent,
							PackageManager.GET_INTENT_FILTERS);
			ComponentName componentName = null;
			for (int i = 0; i < resolveInfoList.size(); i++) {
				if (TextUtils.equals(
						resolveInfoList.get(i).activityInfo.packageName,
						YouNeedAppPackageName)) {
					componentName = new ComponentName(
							resolveInfoList.get(i).activityInfo.packageName,
							resolveInfoList.get(i).activityInfo.name);
					break;
				}
			}
			// 已安装**
			if (null != componentName) {
				shareIntent.setComponent(componentName);
				mContext.startActivity(shareIntent);
			} else {
				ContextUtil.getInstance().showToastMsg("请先安装**");
			}
		} catch (Exception e) {
			ContextUtil.getInstance().showToastMsg("分享图片到**失败");
		}
	}

参考的文章如下:

android设置应用程序默认值

Android中有时打开一个文件,系统会弹出一个应用程序选择列表供你选择.如果你把某个应用程序设为默认值,则不会弹出选择框,而会直接调用该程序.

设置方法如下:

PackageManager pm = getPackageManager();

IntentFilterfilter = new IntentFilter();

filter.addCategory("android.intent.category.DEFAULT");

ComponentName component = newComponentName("YourClearAppPakageName","YourClearAppClassName");

ComponentName[] components = new ComponentName[]{new ComponentName("YourPreferAppPakageName","YourPreferAppClassName"), component};

pm.clearPackagePreferredActivities("YourClearAppPakageName");

pm.addPreferredActivity(filter,IntentFilter.MATCH_CATEGORY_EMPTY, components, component);

列入修改系统默认Launhcer但不是唯一的Launcher

PackageManager pm = getPackageManager();  
IntentFilter filter = new IntentFilter(); 
filter.addAction("android.intent.action.MAIN");
 filter.addCategory("android.intent.category.HOME"); 
filter.addCategory("android.intent.category.DEFAULT");
  Context context = getApplicationContext();
 ComponentName component = new ComponentName(context.getPackageName(), TestReplaceHomeAppActivity.class.getName());  ComponentName[] components = new ComponentName[] {new ComponentName("com.android.launcher", "com.android.launcher.Launcher"), component};  
pm.clearPackagePreferredActivities("com.android.launcher"); pm.addPreferredActivity(filter, IntentFilter.MATCH_CATEGORY_EMPTY, components, component);

修改默认浏览器

PackageManager packageManager =context.getPackageManager();

String str1 = "android.intent.category.DEFAULT";

String str2 = "android.intent.category.BROWSABLE";

String str3 = "android.intent.action.VIEW";

//设置默认项的必须参数之一,用户的操作符合该过滤器时,默认设置起效

IntentFilter filter = new IntentFilter(str3);

filter.addCategory(str1);

filter.addCategory(str2);

filter.addDataScheme("http");

//设置浏览页面用的Activity

ComponentName component = new ComponentName(context

.getPackageName(), BrowserActivity.class.getName());

Intent intent = new Intent(str3);

intent.addCategory(str2);

intent.addCategory(str1);

Uri uri = Uri.parse("http://");

intent.setDataAndType(uri, null);

//找出手机当前安装的所有浏览器程序

List resolveInfoList = packageManager

.queryIntentActivities(intent,

PackageManager.GET_INTENT_FILTERS);

int size = resolveInfoList.size();

ComponentName[] arrayOfComponentName = newComponentName[size];

for (int i = 0; i < size; i++)

{

ActivityInfo activityInfo =resolveInfoList.get(i).activityInfo;

String packageName = activityInfo.packageName;

String className = activityInfo.name;

//清除之前的默认设置

packageManager.clearPackagePreferredActivities(packageName);

ComponentName componentName = newComponentName(packageName,

className);

arrayOfComponentName[i] = componentName;

}

packageManager.addPreferredActivity(filter,

IntentFilter.MATCH_CATEGORY_SCHEME,arrayOfComponentName,

component);

时间: 2024-10-25 14:44:53

Android 如何实现本地图片直接分享到微信、来往、QQ等,直接分享图片到指定应用的相关文章

asp.net mvc 如何调用微信jssdk接口:分享到微信朋友(圈)| 分享到qq空间

如何在asp.net mvc 项目里, 调用微信jssdk接口,现实功能: 分享到微信朋友(圈)| 分享到qq空间 1 创建一个Action,准备一些数据,初始化数据(签名): /// <summary> /// 分享的内容 /// 必须写在html的head里面才可以生效 /// </summary> /// <param name="fxUrl"></param> /// <returns></returns>

自定义UI集成微信、QQ、微博分享功能

目前社会化分享是一个非常常见的功能,通过阅读官方文档可以进行对应平台的分享.在项目中原本有微信的分享,后来需要集成QQ和微博的分享,于是想着用ShareSDK,在使用的过程中发现ShareSDK中的weChatSDK与原来的不同,导致原来的微信注册与登录功能无法使用,具体原因不详.没办法只能手动集成(看到安卓的小伙伴没有问题,我就不开心了,让我哭三声??????).首先要解决UI问题,因为苹果不允许推荐第三方应用,只能通过判断去隐藏微信.QQ图标(如果用户没有安装).本人一直都觉得没有设计天赋,

关于js实现微信,QQ,微博分享的总结

2018年5月16日,今天搜索了有关js分享的功能,做个总结.   微信内浏览器 App(hybrid) UC,QQ浏览器 其他浏览器 微信 1 调用内置API可一键分享 2 引导使用自带分享功能 1. 嵌套webview调用原生 2. 弹出系统默认浏览器 1 调用内置API可一键分享 2 引导使用自带分享功能 1. 引导使用自带分享功能 QQ 1 引导使用自带分享功能 1. 嵌套webview里调用原生 2. 嵌套webview里使用网页分享API 3. 弹出系统默认浏览器 1 调用内置API

Web 项目中分享到微博、QQ空间等分享功能

网上有很多的模板以及代码,但是有很多都不能分享内容,简单的测试了下: 以新浪微博为例,文本框中的内容是title属性,下面的链接是url属性,如果你的链接页面有图片,会自动抓取图片让你选择,因此,当你自己写分享功能时需要你传递title和url属性到接口链接即可. 代码如下: 1 <script> 2 function buttonShare(url){ 3 $("#theForm").attr("action",url); 4 $("#the

在网页中添加分享到微信、QQ、微博

参考地址:http://www.bshare.cn/help/installAction 在上面的地址中: 1.可选择分享到的位置,如QQ.微信.微博等 2.按钮的样式.悬浮或者以横幅的方式自己找位置放

SharePanel – Android上简单的一键分享,可分享到微信QQ和新浪微博

SharePanel – Android上简单的一键分享,可分享到微信QQ和新浪微博 SharePanel Android上简单的一键分享可分享到微信QQ和新浪微博 简介 效果图 代码块 简介 最近在写一个小程序长微博工具,效果就是编辑长微博,然后一键分享到微信.QQ和新浪微博. 一开始是想直接用Intent.createChooser(target, title)来做,后来一想,这样做不是很好啊,会有许多乱七八糟的应用弹出来,我想优先分享到微信.QQ和微博,于是找了点资料,将一键分享这个部分做

Android利用微信SDK分享到微信教程,回调分享结果错误解决和注意点

在正式开始之前这里要着啰嗦一下,进来的同学一定要看,在申请应用的时候要填一个签名,这个签名是由应用的签名文件keystore决定的,那么你在填这个签名的时候,一定要把你的应用用正式的keyStore生成apk,安装到手机,然后用微信提供的获取应用签名的apk工具获取你应用的签名,然后这会生成的这个签名才是正确的,千万记得,不要使用dubug的ketStore测试,不然后面虽然可以修改,修改了后要审核,但是审核也是需要时间的,会很麻烦. 还有一点,你在测试微信分享的时候可能会直接在Eclipse好

Android系统自带分享功能的实现(可同时分享文字和图片)

 /** * 分享功能 * * @param context * 上下文 * @param activityTitle * Activity的名字 * @param msgTitle * 消息标题 * @param msgText * 消息内容 * @param imgPath * 图片路径,不分享图片则传null */ public void shareMsg(String activityTitle, String msgTitle, String msgText, String img

Android之获取本地图片并压缩方法

这两天在做项目时,做到上传图片功能一块时,碰到两个问题,一个是如何获取所选图片的路径,一个是如何压缩图片,在查了一些资料和看了别人写的后总算折腾出来了,在此记录一下. 首先既然要选择图片,我们就先要获取本地所有的图片,Android已经为我们封装好了该意图. 1 Intent intent = new Intent(Intent.ACTION_PICK, null);//从列表中选择某项并返回所有数据 2 intent.setDataAndType( 3 MediaStore.Images.Me

微信朋友圈如何同时分享(图片+文字) Android版

以下是:微信朋友圈SDK 分享图片的代码,但只能分享图片,不能分享文字,如何才能图片和文字同时分享?求各位大神指教! public class MainActivity extends Activity {     private static final int THUMB_SIZE = 150;     private static final String SDCARD_ROOT = Environment.getExternalStorageDirectory().getAbsolute