手順 _InstallApk(REV:文字列); VAR LFILE:JFileの。 LIntent:JIntent。 開始 LFILEを: = TJFile.JavaClass.init(StringToJString(抽出ファイルパス(改訂))、StringToJstring(抽出ファイル名(RV))); LIntent: = TJIntent。作成します。 LIntent.setAction(TJIntent.JavaClass.ACTION_VIEW)。 LIntent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK)。 LIntent.setDataAndType(TJnet_Uri.JavaClass.fromFile(LFILE)、StringToJString(「アプリケーション/ vnd.android.package-アーカイブ" )); TAndroidHelper.Context.startActivity(LIntent)。 エンド; 手順 InstallApk(APK:文字列); VAR LFILE:JFileの。 LIntent:JIntent。 LNet_Uri:Jnet_Uri。 開始 場合 ではない TOSVersion.Check(7、0)、次いで 開始 _InstallApk(APK)。 出口; エンド; LFILE: = TJFile.JavaClass.init(StringToJString(ExtractFilePath(APK))、StringToJstring(ExtractFileName(APK)))。 LIntent: = TJIntent。作成します。 もし TOSVersion.Check(8、0)、次いで LIntent.setAction(TJIntent.JavaClass.ACTION_INSTALL_PACKAGE) 他 LIntent.setAction(TJIntent.JavaClass.ACTION_VIEW)。 LIntent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK)。 もし TOSVersion.Check(7、0)、その後 始まる // 修正:android.os.FileUriExposedException:Intent.getData()を介してアプリから露出 // プロジェクト- >オプション- >アプリケーション- >エンタイトルメントのリスト- >セキュアなファイル共有- >それは確認してください (TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION)LIntent.addFlags。 LNet_Uri: = TJFileProvider.JavaClass.getUriForFile(TAndroidHelper.Context、 StringToJString(JStringToString(TAndroidHelper.Context.getPackageName) + '.fileprovider " )LFILE)。 終わり そうでない LNet_Uri: = TJnet_Uri.JavaClass.fromFile(LFILE)。 LIntent.setDataAndType(LNet_Uri、StringToJString(「アプリケーション/ vnd.android.package-アーカイブ" )); TAndroidHelper.Context.startActivity(LIntent)。 エンド ;
マニフェストリガへのAndroid 8.0以上の権限
<用途許可アンドロイド:名= 「android.permission.REQUEST_INSTALL_PACKAGES」/>
ありがとうございcodecoolieデルファイのために、FFmpegのを http://www.CCAVC.com http://www.DelphiFFmpeg.comそれをサポートする機会があり、作者!