安卓app分享功能怎么实现,android分享自己的应用
效果图如下:
需求指定应用分享至图片中的5个应用,手机上未安装显示为灰色,点击打开应用市场;安装了点击打开。
在手机上只安装了微信
主要代码如下:
/**
* 分享对话框
* 显示5个排序好的分享app,提示是否安装
* 需要分享的节目名称
* @param共享内容
public void showShare_5(最终字符串shareContent) {
dialog=new Dialog(上下文,r . style。对话);
对话。设置内容视图(r .布局dialog _ factory _ share _ 5);
最终TextView TV _ Sina _ Weibo=(TextView)对话框。findviewbyid(r . id。TV _新浪);
最终TextView TV _ renren=(TextView)对话框。findviewbyid(r . id。TV _人人网);
最终TextView TV _ Tecent _ Weibo=(TextView)对话框。findviewbyid(r . id。TV _ QQ _微博);
最终TextView TV _ message=(TextView)对话框。findviewbyid(r . id。TV _ message);
最终TextView TV _ weixin=(TextView)对话框。findviewbyid(r . id。TV _ weixin);
最终列表AppInfo shareAppInfos=getShareAppList();
for(int I=0;我shareappinfos。size();i ) {
if (com.sina.weibo ).equals(shareAppInfos.get(i).getAppPkgName())) {
drawable add=context。获取资源().getDrawable(r . drawable。icon _ share _新浪微博);
add.setBounds(0,0,add.getMinimumWidth(),add。获取最小高度());
电视_新浪_微博。setcompoundrawables(add,null,null,null);//设置左图标
电视_新浪_微博。设置标签(一);
if (com.tencent.WBlog ).equals(shareAppInfos.get(i).getAppPkgName())) {
drawable add=context。获取资源().getDrawable(r . drawable。icon _ share _腾讯_微博);
add.setBounds(0,0,add.getMinimumWidth(),add。获取最小高度());
TV _腾讯_微博。setcompoundrawables(add,null,null,null);//设置左图标
电视_腾讯_微博。设置标签(一);
if (com.android.mms ).equals(shareAppInfos.get(i).getAppPkgName())) {
drawable add=context。获取资源().getDrawable(r . drawable。图标_分享_消息);
add.setBounds(0,0,add.getMinimumWidth(),add。获取最小高度());
电视_消息。setcompoundrawables(add,null,null,null);//设置左图标
tv _ message.setTag(一);
if (com.renren.mobile.android ).equals(shareAppInfos.get(i).getAppPkgName())) {
drawable add=context。获取资源().getDrawable(r . drawable。icon _ share _ renren);
add.setBounds(0,0,add.getMinimumWidth(),add。获取最小高度());
TV _人人网。setcompoundrawables(add,null,null,null);//设置左图标
tv_renren.setTag(一);
if (com.tencent.mm ).equals(shareAppInfos.get(i).getAppPkgName())) {
drawable add=context。获取资源().getDrawable(r . drawable。icon _ share _腾讯_微信);
add.setBounds(0,0,add.getMinimumWidth(),add。获取最小高度());
TV _微信。setcompoundrawables(add,null,null,null);//设置左图标
tv_weixin.setTag(一);
//直接写死5个分享的应用信息
final AppInfo app _ Sina=new AppInfo( com。新浪。微博, com。新浪。微博。编辑活动’);
final AppInfo app _ tx _ Weibo=new AppInfo( com。腾讯。wblog),
com。腾讯。wblog。意向代理。腾讯weipointent’);
final AppInfo app _ renren=new AppInfo( com。人人网。手机。安卓),
com。人人网。手机。安卓。出版商。input publisher activity’);
final AppInfo app _ message=new AppInfo( com。安卓。彩信, com。安卓。彩信。ui。composemessageactivity’);
final AppInfo app _ weixin=new AppInfo( com。腾讯。mm , com。腾讯。嗯。ui。工具。shareimgui’);
最终字符串分享=语境。getstring(r . String。dialog _ share 1)共享内容
语境。getstring(r . string。dialog _ share 2);
电视_新浪_微博。setonclicklistener(new OnClickListener(){
@覆盖
公共void onClick(视图五){
setOnClick(电视_新浪_微博,应用程序_新浪,分享);
TV _人人网。setonclicklistener(new OnClickListener(){
@覆盖
公共void onClick(视图五){
seton点击(电视_人人网,应用程序_人人网,分享);
电视_腾讯_微博。setonclicklistener(new OnClickListener(){
@覆盖
公共void onClick(视图五){
seton点击(电视_腾讯_微博,app _ tx _微博,分享);
电视_消息。setonclicklistener(new OnClickListener(){
@覆盖
公共void onClick(视图五){
setOnClick(电视_消息,应用程序_消息,分享);
TV _微信。setonclicklistener(new OnClickListener(){
@覆盖
公共void onClick(视图五){
setOnClick(tv_weixin,app_weixin分享);
按钮BTN _关闭=(按钮)对话框。findviewbyid(r . id。BTN _对话_关闭);
btn_close.setOnClickListener(新建按钮OnClickListener() {
@覆盖
公共void onClick(视图五){
对话。dissolve();
对话。show();
}
AppInfo:
public void setappalancherclassname(String appalancherclassname){
appalancherclassname=appalancherclassname;
公共字符串getAppName() {
返回应用程序名
public void set appName(String appName){
AppName=appName
公共可提取getAppIcon() {
返回应用图标
公共void setAppIcon(可绘制的应用程序图标){
AppIcon=appIcon
}
/**
* 查询所有支持分享的应用信息
* @param上下文
* @返回
个人分发名单解析信息getShareApps(上下文Context){
列表解析信息mApps=新数组列表解析信息
意向意向=新意向(意向. ACTION_SEND,null);
intent.addCategory(Intent .类别_默认);
意图。settype(“text/plain”);
包管理器p管理器=上下文。getpackagemanager();
mApps=p经理。查询活动(意图,包管理器.组件_启用_状态_默认);
返回地图;
* 得到应用列表
* @返回
个人分发名单AppInfo getShareAppList() {
list AppInfo shareAppInfos=new ArrayList AppInfo
包管理器包管理器=上下文。getpackagemanager();
list resolve info resolve infos=getShareApps(context);
if (null==resolveInfos) {
返回空
否则{
for(解析信息解析信息:解析信息){
AppInfo AppInfo=new AppInfo();
appinfo。setapppkgname(解析信息。活动信息。包名);
appinfo。setpalancherclassname(解析信息。活动信息。姓名);
appinfo。设置appname(解析信息。加载标签(包管理器).toString());
appinfo。setappicon(解析信息。loadicon(包管理器));
shareappinfos。添加(appInfo);
返回shareAppInfos
}