美文网首页
Android实现把分享图片,文字,vcard给自己的app

Android实现把分享图片,文字,vcard给自己的app

作者: 年小个大 | 来源:发表于2019-10-10 09:29 被阅读0次

    Android实现分享图片,文字,vcard给自己的app

    android.intent.action.SEND
    

    在manifest中过滤意图让自己的app出现在分享列表中

    图片:

    要想实现这个功能现在manifest文件中添加想要获取分享的类型:

             <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
                获取分享的单个图片
                <!--share img-->
                <intent-filter>
                    <action android:name="android.intent.action.SEND" />
    
                    <category android:name="android.intent.category.DEFAULT" />
    
                    <data android:mimeType="image/*" />
                </intent-filter>
                这个是获取分享的文字
                <!-- share text-->
                <intent-filter>
                    <action android:name="android.intent.action.SEND" />
    
                    <category android:name="android.intent.category.DEFAULT" />
    
                    <data android:mimeType="text/plain" />
                </intent-filter>
                获取分享的多组图片
                <!--share imgs -->
                <intent-filter>
                    <action android:name="android.intent.action.SEND_MULTIPLE" />
    
                    <category android:name="android.intent.category.DEFAULT" />
    
                    <data android:mimeType="image/*" />
                </intent-filter>
                获取分享的vcard 电话簿 单个的
                <!--  share vcard-->
                <intent-filter>
                    <action android:name="android.intent.action.SEND" />
                    <category android:name="android.intent.category.DEFAULT" />
                    <data android:mimeType="text/x-vcard" />
                </intent-filter>
            </activity>
    

    然后你的应用就会出现在分享列表中了。

    在activity中获取intent拿到分享的数据

    getIntent()

    给大家分享一个库,(我自己写的(嘿嘿嘿))。对着几种分享进行了封装,使用很简单,只要在要展示分享内容的activit中执行一个方法就行了。

    ShareToMe.handleShareToMe(this, getIntent(), new ShareToMe.HandleListener() {
               @Override
               public void handleType(String type) {}
              @Override
                public void handleContent(BaseShareData shareData) {}
              @Override
                public void handleError(String e) {}
        
    }
    

    具体使用

    ShareToMe.handleShareToMe(this, getIntent(), new ShareToMe.HandleListener() {
                /**
                 *
                 * @param type  Original Sharing Type image/* ,text/plain ,text/x-vcard<p/>
                 */
                @Override
                public void handleType(String type) {
                    Log.d("Dboy", "type =>" + type);
                }
    
                /**
                 * @param shareData 处理分享数据的实体基类
                 */
                @Override
                public void handleContent(BaseShareData shareData) {
    
                    Log.d("Dboy", "data =>" + shareData.toString());
    
                    mTextView.setText(shareData.toString());
    
                    if (shareData.isMultipleImagesData()) {
    
                        ShareMultipleImagesData shareMultipleImagesData =   shareData.getMultipleImagesData();
                        mBaseQuickAdapter.addData(shareMultipleImagesData.getImgPath());
    
                    } else if (shareData.isImageData()) {
    
                        ShareImageData shareImageData = shareData.getImageData();
                        viewById.setVisibility(View.VISIBLE);
                        String path = shareImageData.getPath();
                        Glide.with(getApplicationContext()).load(path).into(viewById);
    
                    } else if (shareData.isTextData()){
                        ShareTextData textData = shareData.getTextData();
    
                    } else if (shareData.isVCardData()) {
                        ShareVCardData vCardData = shareData.getVCardData();
    
                    }
    
                }
    
                /**
                 * @param e error
                 */
                @Override
                public void handleError(String e) {
                    Log.d("Dboy", "error =>" + e);
                }
            });
    

    具体使用,内部实现呢,看一下demo,和源码。

     allprojects {
       repositories {
           ...
           maven { url 'https://jitpack.io' }
       }
     }
    
     dependencies {
           implementation 'com.github.Dboy233:ShareToMe:3.0'
     }
    

    GitHub地址https://github.com/Dboy233/ShareToMe

    效果图

    Gif_20190914_123916.gif Gif_20190914_124033.gif

    相关文章

      网友评论

          本文标题:Android实现把分享图片,文字,vcard给自己的app

          本文链接:https://www.haomeiwen.com/subject/hbxayctx.html