提到分享最常用的都是第三方分享,例如盟,ShareSDK等等,当然也用使用微信,qq等官方的SDK分享;最近在项目中使用了系统自带的分享功能,个人感觉要更简单。
先上代码
文本分享
代码如下:
public void shareText() {
Intent sendIntent = new Intent();
ComponentName comp = new ComponentName("目标app包名", "目标app类名");
sendIntent.setComponent(comp);
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra(Intent.EXTRA_TEXT, "要分享的文本内容");
startActivity(sendIntent);
}
图片分享
代码如下:
public void shareImage() {
ComponentName comp = new ComponentName("目标app包名", "目标app类名");
Intent sendIntent = new Intent();
sendIntent.setComponent(comp);
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.setType("image/*");
sendIntent.putExtra(Intent.EXTRA_STREAM, "图片的uri");
startActivity(sendIntent);
}
首先介绍ComponentName类。 ComponentName与Intent同位于Android.content包下,我们从android官方文档中可以看到,这个类主要用来定义可见一个应用程序组件,例如:Activity,Service,BroadcastReceiver或者ContentProvider。new ComponentName(,);括号内填入目标APP的包名和接收资料的类名 ,那么怎样才能找到它们呢(当然!你可以百度)?,下面介绍我的方法:
Intent it = new Intent(Intent.ACTION_SEND);
it.setType("text/plain");
List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(it, 0);
if (!resInfo.isEmpty()) {
List targetedShareIntents = new ArrayList();
for (ResolveInfo info : resInfo) {
Intent targeted = new Intent(Intent.ACTION_SEND);
targeted.setType("text/plain");
ActivityInfo activityInfo = info.activityInfo;
}
}
通过getPackageManager().queryIntentActivities(it, 0)我们可以得到当前已安装的所有支持分享的应用的包名和类名;结合前面的方法即可完成分享。
有何不当之处还请各位大神多多指教!!!
网友评论