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

来源:互联网 发布:录制桌面视频软件 编辑:程序博客网 时间:2024/05/16 10:56

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

[java] view plaincopy在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上某个应用的详细页面

[java] view plaincopy在CODE上查看代码片派生到我的代码片

  1. Uri uri = Uri.parse("market://details?id=应用包名");  

  2. Intent it = new Intent(Intent.ACTION_VIEW,uri);  

  3. startActivity(it);  

用下面代码可以弹出一个分享列表让用户选择需要分享哪些文字内容。如果去调用setPackage方法的注销就会直接跳转新浪微博分享文字。

[java] view plaincopy在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 plaincopy在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 plaincopy在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.    }  

0 0
原创粉丝点击