利用Android自带的API实现分享功能

前言

在做项目的过程中需要实现文字和图片的分享,有两种方式:

  1. 使用android sdk中自带的Intent.ACTION_SEND实现分享。
  2. 使用shareSDK、友盟等第三方的服务。
    鉴于使用的方便,此次只介绍使用Android sdk中自带的方式来实现分享的功能。

分享文字

/** 
     * 分享文字内容 
     *  
     * @param dlgTitle 
     *            分享对话框标题 
     * @param subject 
     *            主题 
     * @param content 
     *            分享内容(文字) 
     */  
private void shareText(String dlgTitle, String subject, String content) {  
        if (content == null || "".equals(content)) {  
            return;  
        }  
        Intent intent = new Intent(Intent.ACTION_SEND);  
        intent.setType("text/plain");  
        if (subject != null && !"".equals(subject)) {  
            intent.putExtra(Intent.EXTRA_SUBJECT, subject);  
        }  
  
        intent.putExtra(Intent.EXTRA_TEXT, content);  
  
        // 设置弹出框标题  
        if (dlgTitle != null && !"".equals(dlgTitle)) { // 自定义标题  
            startActivity(Intent.createChooser(intent, dlgTitle));  
        } else { // 系统默认标题  
            startActivity(intent);  
        }  
    }  

分享单张图片

/** 
     * 分享图片和文字内容 
     *  
     * @param dlgTitle 
     *            分享对话框标题 
     * @param subject 
     *            主题 
     * @param content 
     *            分享内容(文字) 
     * @param uri 
     *            图片资源URI 
     */  
    private void shareImg(String dlgTitle, String subject, String content,  
            Uri uri) {  
        if (uri == null) {  
            return;  
        }  
        Intent intent = new Intent(Intent.ACTION_SEND);  
        intent.setType("image/*");  
        intent.putExtra(Intent.EXTRA_STREAM, uri);  
        if (subject != null && !"".equals(subject)) {  
            intent.putExtra(Intent.EXTRA_SUBJECT, subject);  
        }  
        if (content != null && !"".equals(content)) {  
            intent.putExtra(Intent.EXTRA_TEXT, content);  
        }  
  
        // 设置弹出框标题  
        if (dlgTitle != null && !"".equals(dlgTitle)) { // 自定义标题  
            startActivity(Intent.createChooser(intent, dlgTitle));  
        } else { // 系统默认标题  
            startActivity(intent);  
        }  
    }  

分享多张图片

//分享多张图片  
    public void shareMultipleImage(View view) {  
        ArrayList<Uri> uriList = new ArrayList<>();  
  
        String path = Environment.getExternalStorageDirectory() + File.separator;  
        uriList.add(Uri.fromFile(new File(path+"australia_1.jpg")));  
        uriList.add(Uri.fromFile(new File(path+"australia_2.jpg")));  
        uriList.add(Uri.fromFile(new File(path+"australia_3.jpg")));  
  
        Intent shareIntent = new Intent();  
        shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);  
        shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uriList);  
        shareIntent.setType("image/*");  
        startActivity(Intent.createChooser(shareIntent, "分享到"));  
    }  
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,671评论 25 709
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,918评论 0 17
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,786评论 2 45
  • 说好了再见,却为何再也不见,在无人的夜里、空旷的大地里,我声嘶力竭地喊着,不知道是释放还是真的希望能听到你的回应,...
    扫云阅读 4,110评论 14 5
  • 大家好!我是164号宝宝。今天是我参加日记星球第十一天,也是我的第九篇日记。我相信一句承诺终身追求。我会如实...
    韦炜阅读 2,953评论 0 2

友情链接更多精彩内容