前言
在使用应用功能时会经常需要分享一些图片等等其他资源到微信上,或者接收一些其他应用分享来的图片等等其他资源。
接收分享来的资源
下面这个例子使用一个activity来接收分享来的图片,在AndroidManifest.xml 中添加, 请注意以下几个关键:
- android:exported="true" 一定是true。否则此activity不会出现在分享弹窗的选项里
- android.intent.action.SEND 为分享单个文件
- android.intent.action.SEND_MULTIPLE 为分享多个文件
<activity android:name=".ui.gallery.ReceiveShareImageActivity" android:exported="true" > <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="image/*" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.SEND_MULTIPLE" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="image/*" /> </intent-filter> </activity>
mimeType的其他类型
<data android:mimeType="image/*" /> <data android:mimeType="video/*" /> <data android:mimeType="audio/*" /> <data android:mimeType="text/x-vcard" /> <data android:mimeType="text/x-vcalendar" /> <data android:mimeType="text/calendar" /> <data android:mimeType="text/plain" /> <data android:mimeType="text/html" /> <data android:mimeType="text/xml" /> <data android:mimeType="application/zip" /> <data android:mimeType="application/vnd.ms-excel" /> <data android:mimeType="application/msword" /> <data android:mimeType="application/vnd.ms-powerpoint" /> <data android:mimeType="application/pdf" /> <data android:mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" /> <data android:mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document" /> <data android:mimeType="application/vnd.openxmlformats-officedocument.presentationml.presentation" /> <data android:mimeType="application/x-hwp" />
在activity的onCreate调用如下代码,获取分享来的图片:
private fun getShareImage() { intent.type?.let { type -> /* 单个图片分享接收 */ if (intent.action == Intent.ACTION_SEND && type.startsWith("image/")) { val uri: Uri? = intent.getParcelableExtra(Intent.EXTRA_STREAM) uri?.let { uri -> val inputStream = contentResolver.openInputStream(uri) val bitmap = BitmapFactory.decodeStream(inputStream) inputStream?.close() } } /* 多个图片分享接收 */ if (intent.action == Intent.ACTION_SEND_MULTIPLE && type.startsWith("image/")) { val arrayList: ArrayList<Uri>? = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM) arrayList?.let { arrayList -> arrayList.forEach { val inputStream = contentResolver.openInputStream(it) val bitmap = BitmapFactory.decodeStream(inputStream) inputStream?.close() } } } } }
发送资源分享到其他应用
分享文字
//分享文字 fun shareText() { val shareIntent = Intent() shareIntent.action = Intent.ACTION_SEND shareIntent.putExtra(Intent.EXTRA_TEXT, "This is my Share text.") shareIntent.type = "text/plain" //设置分享列表的标题,并且每次都显示分享列表 startActivity(Intent.createChooser(shareIntent, "分享到")) }
分享图片
End
标签:val,SEND,inputStream,开发,intent,Intent,Android,分享 From: https://www.cnblogs.com/guanxinjing/p/16741030.html