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'
}