Dim pho As Phone
Dim igis As Intent
If pho.SdkVersion < 24 Then
igis.Initialize(igis.ACTION_VIEW, "file://" & File.Combine(File.DirDefaultExternal, "temp.apk"))
Else
igis.Initialize(igis.ACTION_VIEW, "content:///" & File.Combine(File.DirDefaultExternal, "temp.apk"))
End If
igis.SetType("application/vnd.android.package-archive")
StartActivity(igis)
Attention.
1. You need to adapt your starter to get the shared folder...
B4X:
Sub Process_Globals
Public rp As RuntimePermissions
Public shared As String
End Sub
Sub Service_Create
shared = rp.GetSafeDirDefaultExternal("shared")
End Sub
2. You need to save the temp.apk to the shared folder when downloading...
3.
B4X:
Dim pho As Phone
Dim igis As Intent
igis.Initialize(igis.ACTION_VIEW, CreateFileProviderUri(starter.shared, "temp.apk")) igis.SetType("application/vnd.android.package-archive")
igis.Flags = 1 ' addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) which is the constant 1
StartActivity(igis)
Needed helper sub
B4X:
Sub CreateFileProviderUri (Dir As String, FileName As String) As Object
Dim FileProvider As JavaObject
Dim context As JavaObject
context.InitializeContext
FileProvider.InitializeStatic("android.support.v4.content.FileProvider")
Dim f As JavaObject
f.InitializeNewInstance("java.io.File", Array(Dir, FileName))
Return FileProvider.RunMethod("getUriForFile", Array(context, Application.PackageName & ".provider", f))
End Sub
After
StartActivity(igis)
runs, how can you tell the installation is complete if you are running this from a service?
If it ran from an activity, I assume it would return to Activity_Resume...
Thanks,
Rusty