android 调用系统分享功能以及实现自定义分享

在这次的语言备忘录项目中使用到了分享功能,今天周五了总结一下使用的心得:
首先来说一下使用系统的分享功能:首先来说一下使用系统的分享功能:结合项目主要是语音的分享

调用系统的分析功能就简单多了,主要是设置一下Intent 对象的一些属性,然后start就好了。


 public static void shareMemo(Context context, String path) {
    Uri uri = Uri.parse("file:///" + path);
    Intent it = new Intent(Intent.ACTION_SEND);
    it.putExtra(Intent.EXTRA_STREAM, uri);
    it.setType("audio/*");
    context.startActivity(Intent.createChooser(it, "共享语音备忘录")));
  }

效果如下图 


下面主要说一下 自定义分享功能实现,主要是自定义界面,主要要做的工作是获取到可分享的应用列表,然后显示应用列表,点击,使用该应用分享语音。

先看代码获取有分享功能的应用列表,将列表信息放在list中:

public static List<ResolveInfo> getShareApps(Context context) {  
      List<ResolveInfo> mApps = new ArrayList<ResolveInfo>();
      Intent intent = new Intent(Intent.ACTION_SEND, null);
      intent.addCategory(Intent.CATEGORY_DEFAULT);
      intent.setType("audio/*");
      PackageManager pManager = context.getPackageManager();
      mApps = pManager.queryIntentActivities(intent, 
              PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
      return mApps;
  }

例如我们用一个ListView 来展示应用列表,下面就是设置adapter,下面主要看ListView的item的click事件:在onClick中我们将被分享的资源的Uri传递进去,以及获取到被点击的应用对应的ResolveInfo 对象的activityInfo.packageName和activityInfo.name,代码如下

 ResolveInfo appInfo=(ResolveInfo) list.get(arg2);
            Uri uri = Uri.parse("file:///" + path);
            Intent shareIntent=new Intent(Intent.ACTION_SEND);
            shareIntent.setComponent(new ComponentName(appInfo.activityInfo.packageName, appInfo.activityInfo.name));  
            shareIntent.setType("audio/*"); 
            shareIntent.putExtra(Intent.EXTRA_STREAM, uri);  
            shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
            startActivity(shareIntent);  
实现效果图仿IOS7 语音分享效果,如下:



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值