Androidapi.JNI.Support引用這個單元
procedure _InstallApk(Apk: string); var LFile: JFile; LIntent: JIntent; begin LFile := TJFile.JavaClass.init(StringToJString(ExtractFilePath(Apk)), StringToJstring(ExtractFileName(Apk))); LIntent := TJIntent.Create; LIntent.setAction(TJIntent.JavaClass.ACTION_VIEW); LIntent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); LIntent.setDataAndType(TJnet_Uri.JavaClass.fromFile(LFile), StringToJString('application/vnd.android.package-archive')); TAndroidHelper.Context.startActivity(LIntent); end; procedure InstallApk(Apk: string); var LFile: JFile; LIntent: JIntent; LNet_Uri: Jnet_Uri; begin if not TOSVersion.Check(7, 0) then begin _InstallApk(Apk); Exit; end; LFile := TJFile.JavaClass.init(StringToJString(ExtractFilePath(Apk)), StringToJstring(ExtractFileName(Apk))); 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('application/vnd.android.package-archive')); TAndroidHelper.Context.startActivity(LIntent); end;
Android 8.0以上要在manifest里加權(quán)限
在AndroidManifest.template.xml文件中加入
<uses-permission?android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>即可。文章來源:http://www.zghlxwxcb.cn/news/detail-661550.html
用TPath處理路徑(跨平臺的路徑相關(guān)應該都使用System.IOUtils里提供的東西來寫)
例如
APK?:=?TPath.Combine(TPath.GetTempPath,?'new.apk');
download('server://foo/bar/new.apk',?APK);?//?save?as?APK
InstallAPK(APK);
在安卓平臺路徑是*nix規(guī)則的,自己應用內(nèi)不需要前綴文章來源地址http://www.zghlxwxcb.cn/news/detail-661550.html
到了這里,關(guān)于Delphi 安卓App自動升級的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!