现在,越来越多的APP需要分享的功能了,但是,我们却需要去每个方向平台那里下载对应的SDK以及申请APPID,这无疑是很麻烦的,虽然有些第三方分享平台(例如mob)已经集成了各种SDK,但是,还是需要到各个分享平台申请APPID,特别是学生做的一些Demo,想拿个APPID的申请还是蛮麻烦的,因此,可以考虑一下系统自带的分享,这样就简单好多了。(●'◡'●)(无需下载额外SDK,无需申请APPID)
其实也是蛮简单的,就几行代码,不够要注意一下,分享到QQ、微信,一次只能分享文本或图片,不能同时文本或图片一起分享,除非。。发两次分享。。。
分享文本代码:
Intent intent = new Intent("android.intent.action.SEND"); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_SUBJECT, "消息标题"); intent.putExtra(Intent.EXTRA_TEXT, "消息内容"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setComponent(new ComponentName("包名", "分享页面名"));//若是分享到QQ,可将包名改为com.tencent.mobileqq,分享页面名改为com.tencent.mobileqq.activity.JumpActivity context.startActivity(intent);
其实,分享图片代码都是一样的,区别是在于如何将图片转换为uri,为了方便大家区分,就写出了两种:
分享图片代码(图片为项目中固定图片):
首先,在AndroidShareSDK/AndroidManifest.xml中添加权限:
<!-- 对SD卡进行写的权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Intent intent = new Intent("android.intent.action.SEND"); intent.setType("image/png"); //将项目图片转换为uri BitmapDrawable bd = (BitmapDrawable) getResources().getDrawable(R.drawable.white); Bitmap bt = bd.getBitmap(); final Uri uri = Uri.parse(MediaStore.Images.Media.insertImage(context.getContentResolver(), bt, null, null)); intent.putExtra(Intent.EXTRA_STREAM, uri); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setComponent(new ComponentName("包名", "分享页面名"));//若是分享到QQ,可将包名改为com.tencent.mobileqq,分享页面名改为com.tencent.mobileqq.activity.JumpActivity context.startActivity(intent);
Intent intent = new Intent("android.intent.action.SEND"); intent.setType("image/png"); File f = new File("图片路径"); intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(f)); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setComponent(new ComponentName("包名", "分享页面名"));//若是分享到QQ,可将包名改为com.tencent.mobileqq,分享页面名改为com.tencent.mobileqq.activity.JumpActivity context.startActivity(intent);
大致分享代码就如上所述了,当然,假如本地没有相应的APP,运行这些代码是会报错的,因此,还需要判断本地是否存在相应的APP再进行分享。具体可以看看这篇文章:[Android]判断本地是否存在某个APP
当然,我自己也写了一个Demo方便大家测试使用:
代码地址:
不经过第三方SDK直接调用系统自带分享QQ、微信