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

2019-10-10  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读