VB开发安卓程序_例程6分享图片

本例程参考 Sharing files from your app with File Provider

'vFilePicName - 指定目录下要分享的文件名称
'FileType - 分享的文件类型,比如分享图片"image/*",分享txt文件"text/*"
Sub ShareFile(vFilePicName As String,FileType As String)
	
	'分享对象
	Dim Provider As FileProvider
	
	File.Copy(File.DirRootExternal, vFilePicName, Provider.SharedFolder, vFilePicName)
		
	Dim in As Intent
	in.Initialize(in.ACTION_SEND, "")
	
	in.SetType(FileType)
'	in.SetType("image/*")

	in.PutExtra("android.intent.extra.STREAM", Starter.Provider.GetFileUri(vFilePicName))

	in.WrapAsIntentChooser("")

	StartActivity(in)
	
	
End Sub

类FileProvider代码:


'v1.00
Sub Class_Globals
	
	Public SharedFolder As String
	Public UseFileProvider As Boolean
	Private rp As RuntimePermissions
	
End Sub

Public Sub Initialize
	
	Dim p As Phone
	If p.SdkVersion >= 24 Or File.ExternalWritable = False Then
		UseFileProvider = True
		SharedFolder = File.Combine(File.DirInternal, "shared")
		File.MakeDir("", SharedFolder)
	Else
		UseFileProvider = False
		SharedFolder = rp.GetSafeDirDefaultExternal("shared")
	End If
	Log($"Using FileProvider? ${UseFileProvider}"$)
	
End Sub

'Returns the file uri.
Public Sub GetFileUri (FileName As String) As Object
	
	If UseFileProvider = False Then
		Dim uri As JavaObject
		Return uri.InitializeStatic("android.net.Uri").RunMethod("parse", Array("file://" & File.Combine(SharedFolder, FileName)))
	Else
		Dim f As JavaObject
		f.InitializeNewInstance("java.io.File", Array(SharedFolder, FileName))
		Dim fp As JavaObject
		Dim context As JavaObject
		context.InitializeContext
		fp.InitializeStatic("android.support.v4.content.FileProvider")
		Return fp.RunMethod("getUriForFile", Array(context, Application.PackageName & ".provider", f))
	End If
	
End Sub

'Replaces the intent Data field with the file uri.
'Resets the type field. Make sure to call Intent.SetType after calling this method
Public Sub SetFileUriAsIntentData (Intent As Intent, FileName As String)
	Dim jo As JavaObject = Intent
	jo.RunMethod("setData", Array(GetFileUri(FileName)))
	Intent.Flags = Bit.Or(Intent.Flags, 1) 'FLAG_GRANT_READ_URI_PERMISSION
End Sub

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值