Android使用Intent一键分享图片文字到腾讯、新浪、开心、微信等

现在分享应用很多,消耗研发与维护时间,增加项目成本,而且集成分享功能后我们的应用包会比以前要大几MB。其实有android的Intent可以满足分享文字和图片的需求,而且不增加应用包的大小。

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. /** 
  2.  * 判断是否安装腾讯、新浪等指定的分享应用 
  3.  * @param packageName 应用的包名 
  4.  */  
  5. public boolean checkInstallation(String packageName){  
  6.       try {  
  7.           this.getPackageManager().getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);  
  8.           return true;  
  9.       } catch (NameNotFoundException e) {  
  10.           return false;  
  11.       }  
  12. }  

如果没有安装指定的应用,下面代码引导跳转去Google Play上某个应用的详细页面(Google Play 现在无法打开)

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. Uri uri = Uri.parse("https://market.android.com/details?id=" + packgeName);  
  2. Intent it = new Intent(Intent.ACTION_VIEW,uri);  
  3. startActivity(it);  
用下面代码可以弹出一个分享列表让用户选择需要分享哪些文字内容。如果去调用setPackage方法的注销就会直接跳转新浪微博分享文字。

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1.         Intent intent=new Intent(Intent.ACTION_SEND);   
  2.         intent.setType("text/plain");  
  3. //      intent.setPackage("com.sina.weibo");   
  4.         intent.putExtra(Intent.EXTRA_SUBJECT, "分享");   
  5.         intent.putExtra(Intent.EXTRA_TEXT, "你好 ");  
  6.         intent.putExtra(Intent.EXTRA_TITLE, "我是标题");  
  7.         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);   
  8.         startActivity(Intent.createChooser(intent, "请选择"));   

微信分享多张图片

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. Intent intent = new Intent();  
  2. //分享精确到微信的页面,朋友圈页面,或者选择好友分享页面  
  3. ComponentName comp = new ComponentName("com.tencent.mm""com.tencent.mm.ui.tools.ShareToTimeLineUI");  
  4. intent.setComponent(comp);  
  5. intent.setAction(Intent.ACTION_SEND_MULTIPLE);  
  6. intent.setType("image/*");  
  7.   
  8. //添加Uri图片地址  
  9. ArrayList<Uri> imageUris = new ArrayList<Uri>();  
  10. intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);  
  11. startActivity(intent);  

     

分享单张图片,操作与分享文字类似。

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1.         Intent shareIntent = new Intent(Intent.ACTION_SEND);  
  2.         shareIntent.setType("image/*");  
  3.         Uri uri = Uri.fromFile(getFileStreamPath("shared.png"));  
  4.         shareIntent.putExtra(Intent.EXTRA_STREAM, uri);  
  5. //  startActivity(Intent.createChooser(shareIntent, "请选择"));  

用Intent分享多张图片

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. /** 
  2.  * 分享多张照片 
  3.  */  
  4. private void sendMultiple(){  
  5.     Intent intent=new Intent(Intent.ACTION_SEND_MULTIPLE);  
  6.     intent.setType("image/*");  
  7.     intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, getUriListForImages());  
  8.     intent.putExtra(Intent.EXTRA_SUBJECT, "分享");  
  9.     intent.putExtra(Intent.EXTRA_TEXT, "你好 ");  
  10.     intent.putExtra(Intent.EXTRA_TITLE, "我是标题");  
  11.     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);   
  12.     startActivity(Intent.createChooser(intent, "请选择"));   
  13. }  
  14.   
  15. /**  
  16.  * 设置需要分享的照片放入Uri类型的集合里  
  17.  */  
  18. private ArrayList<Uri> getUriListForImages() {  
  19.        ArrayList<Uri> myList = new ArrayList<Uri>();  
  20.        String imageDirectoryPath = Environment.getExternalStorageDirectory().getAbsolutePath()+ "/DCIM/100ANDRO/";  
  21.        File imageDirectory = new File(imageDirectoryPath);  
  22.        String[] fileList = imageDirectory.list();  
  23.        if(fileList.length != 0) {  
  24.            for(int i=0; i<5; i++){  
  25.                try{  
  26.                    ContentValues values = new ContentValues(7);  
  27.                    values.put(Images.Media.TITLE, fileList[i]);  
  28.                    values.put(Images.Media.DISPLAY_NAME, fileList[i]);  
  29.                    values.put(Images.Media.DATE_TAKEN, new Date().getTime());  
  30.                    values.put(Images.Media.MIME_TYPE, "image/jpeg");  
  31.                    values.put(Images.ImageColumns.BUCKET_ID, imageDirectoryPath.hashCode());  
  32.                    values.put(Images.ImageColumns.BUCKET_DISPLAY_NAME, fileList[i]);  
  33.                    values.put("_data", imageDirectoryPath + fileList[i]);  
  34.                    ContentResolver contentResolver = getApplicationContext().getContentResolver();  
  35.                    Uri uri = contentResolver.insert(Images.Media.EXTERNAL_CONTENT_URI, values);  
  36.                    myList.add(uri);  
  37.                } catch (Exception e) {  
  38.                    e.printStackTrace();  
  39.                }  
  40.            }  
  41.        }  
  42.        return myList;  
  43.    }  


作者:黑卡米      原文地址:http://blog.csdn.net/aaren_jiang/article/details/8660538

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值