Hallo,
ich biete für meine App eine vom PlayStore unabhängige Updateprüfung und den Download/Installation von Updates per FTP an.
Die Updateprüfung und ggf. der Download funktioniert problemlos, nur die Installation haut (zumindest bei neueren Androidversionen) nicht mehr hin.
Kann mir bitte jemnd sagen wo bei meinem älteren Code das Problem liegt oder wie ich das vereinfachen kann:
ich biete für meine App eine vom PlayStore unabhängige Updateprüfung und den Download/Installation von Updates per FTP an.
Die Updateprüfung und ggf. der Download funktioniert problemlos, nur die Installation haut (zumindest bei neueren Androidversionen) nicht mehr hin.
Kann mir bitte jemnd sagen wo bei meinem älteren Code das Problem liegt oder wie ich das vereinfachen kann:
B4X:
Sub FTPu_DownloadCompleted (ServerPath As String, Success As Boolean)
FTPu.CloseNow
'
If Success = True Then
AddLog("Update wurde heruntergeladen, bereit zur Installation")
'
Wait For (CheckInstallationRequirements) Complete (Result As Boolean)
If Result Then
SendInstallIntent
End If
'
Else
AddLog("Update herunterladen - FEHLER")
MsgboxAsync("Update konnte nicht heruntergeladen werden!","Problem [665]")
End If
End Sub
Private Sub CheckInstallationRequirements As ResumableSub
If phone.SdkVersion >= 26 And CanRequestPackageInstalls = False Then
MsgboxAsync("Bitte erlauben Sie im folgenden Dialog die Installation des Updates...", "")
Wait For Msgbox_Result(Result As Int)
Dim in As Intent
in.Initialize("android.settings.MANAGE_UNKNOWN_APP_SOURCES", "package:" & Application.PackageName)
StartActivity(in)
Wait For Activity_Resume '<-- wait for Activity_Resume
Return CanRequestPackageInstalls
Else If CheckNonMarketAppsEnabled = False Then
MsgboxAsync("Bitte die Installation von Apps die nicht aus dem PlayStore kommen zulassen." & CRLF & _
"Unter Einstellungen - Sicherheit - unbekannte Herkunft" & CRLF & _
"oder auch unter Einstellungen - Apps - unbekannte Herkunft", "")
Return False
Else
Return True
End If
End Sub
Private Sub CanRequestPackageInstalls As Boolean
Dim ctxt As JavaObject
ctxt.InitializeContext
Dim PackageManager As JavaObject = ctxt.RunMethod("getPackageManager", Null)
Return PackageManager.RunMethod("canRequestPackageInstalls", Null)
End Sub
Private Sub CheckNonMarketAppsEnabled As Boolean
If phone.SdkVersion >= 26 Then Return True
If phone.SdkVersion < 17 Or phone.SdkVersion >= 21 Then
Return phone.GetSettings("install_non_market_apps") = "1"
Else
Dim context As JavaObject
context.InitializeContext
Dim resolver As JavaObject = context.RunMethod("getContentResolver", Null)
Dim global As JavaObject
global.InitializeStatic("android.provider.Settings.Global")
Return global.RunMethod("getString", Array(resolver, "install_non_market_apps")) = "1"
End If
End Sub
Private Sub SendInstallIntent
Dim ApkName As String = "LF.apk"
File.copy(File.DirInternal, ApkName, Starter.Provider.SharedFolder, ApkName)
Dim i As Intent
If phone.SdkVersion >= 24 Then
i.Initialize("android.intent.action.INSTALL_PACKAGE", Starter.Provider.GetFileUri(ApkName))
i.Flags = Bit.Or(i.Flags, 1) 'FLAG_GRANT_READ_URI_PERMISSION
Else
i.Initialize(i.ACTION_VIEW, "file://" & File.Combine(Starter.Provider.SharedFolder, ApkName))
i.SetType("application/vnd.android.package-archive")
End If
StartActivity(i)
End Sub