procedure ToInstallApk(filename: string ); |
var |
aFile: Jfile; |
Intent: JIntent; |
begin |
Try |
aFile := TJfile . JavaClass . init(stringtojstring(DownPath),stringtojstring(filename)); |
Intent := TJIntent . Create; |
Intent . setAction(TJIntent . JavaClass . ACTION_VIEW); |
Intent . addFlags(TJIntent . JavaClass . FLAG_ACTIVITY_NEW_TASK); |
Intent . setDataAndType(TJnet_Uri . JavaClass . fromFile(aFile), stringtojstring( 'applicationnd.android.package-archive' )); |
SharedActivityContext . startActivity(Intent); |
Except |
End ; |
end ; |
procedure ToInstallApk70(filename: string ); |
var |
LFile: JFile; |
LIntent: JIntent; |
LNet_Uri: Jnet_Uri; |
begin |
if not TOSVersion . Check( 7 , 0 ) then |
begin |
ToInstallApk(filename); |
exit; |
end ; |
LFile := TJFile . JavaClass . init(StringToJString(ExtractFilePath(DownPath)), StringToJstring(ExtractFileName(filename))); |
LIntent := TJIntent . Create; |
if TOSVersion . Check( 8 , 0 ) then |
LIntent . setAction(TJIntent . JavaClass . ACTION_INSTALL_PACKAGE) |
else |
LIntent . setAction(TJIntent . JavaClass . ACTION_VIEW); |
LIntent . addFlags(TJIntent . JavaClass . FLAG_ACTIVITY_NEW_TASK); |
if TOSVersion . Check( 7 , 0 ) then |
begin |
// fix: android.os.FileUriExposedException: exposed beyond app through Intent.getData() |
// Project -> Options -> Application -> Entitlement List -> Secure File Sharing -> Check it |
LIntent . addFlags(TJIntent . JavaClass . FLAG_GRANT_READ_URI_PERMISSION); |
LNet_Uri := TJFileProvider . JavaClass . getUriForFile(TAndroidHelper . Context, |
StringToJString(JStringToString(TAndroidHelper . Context . getPackageName) + '.fileprovider' ), LFile); |
end |
else |
LNet_Uri := TJnet_Uri . JavaClass . fromFile(LFile); |
LIntent . setDataAndType(LNet_Uri, StringToJString( 'applicationnd.android.package-archive' )); |
TAndroidHelper . Context . startActivity(LIntent); |
end ; |