From 72b3f4212cf8a4b65c28d816047e2dce25982228 Mon Sep 17 00:00:00 2001 From: oxmc <67136658+oxmc@users.noreply.github.com> Date: Fri, 13 Jan 2023 11:35:49 -0800 Subject: [PATCH] Create installapk.cs --- Assets/Scripts/installapk.cs | 60 ++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 Assets/Scripts/installapk.cs diff --git a/Assets/Scripts/installapk.cs b/Assets/Scripts/installapk.cs new file mode 100644 index 0000000..11752ef --- /dev/null +++ b/Assets/Scripts/installapk.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading; +using System.Threading.Tasks; +using UnityEngine; +using UnityEngine.Networking; +using UnityEngine.SceneManagement; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +private bool installApp(string apkPath) +{ + bool success = true; + //GameObject.Find("TextDebug").GetComponent().text = "Installing App"; + + try + { + //Get Activity then Context + AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); + AndroidJavaObject currentActivity = unityPlayer.GetStatic("currentActivity"); + AndroidJavaObject unityContext = currentActivity.Call("getApplicationContext"); + + //Get the package Name + string packageName = unityContext.Call("getPackageName"); + string authority = packageName + ".fileprovider"; + + AndroidJavaClass intentObj = new AndroidJavaClass("android.content.Intent"); + string ACTION_VIEW = intentObj.GetStatic("ACTION_VIEW"); + AndroidJavaObject intent = new AndroidJavaObject("android.content.Intent", ACTION_VIEW); + + + int FLAG_ACTIVITY_NEW_TASK = intentObj.GetStatic("FLAG_ACTIVITY_NEW_TASK"); + int FLAG_GRANT_READ_URI_PERMISSION = intentObj.GetStatic("FLAG_GRANT_READ_URI_PERMISSION"); + + //File fileObj = new File(String pathname); + AndroidJavaObject fileObj = new AndroidJavaObject("java.io.File", apkPath); + //FileProvider object that will be used to call it static function + AndroidJavaClass fileProvider = new AndroidJavaClass("android.support.v4.content.FileProvider"); + //getUriForFile(Context context, String authority, File file) + AndroidJavaObject uri = fileProvider.CallStatic("getUriForFile", unityContext, authority, fileObj); + + intent.Call("setDataAndType", uri, "application/vnd.android.package-archive"); + intent.Call("addFlags", FLAG_ACTIVITY_NEW_TASK); + intent.Call("addFlags", FLAG_GRANT_READ_URI_PERMISSION); + currentActivity.Call("startActivity", intent); + + //GameObject.Find("TextDebug").GetComponent().text = "Success"; + } + catch (System.Exception e) + { + //GameObject.Find("TextDebug").GetComponent().text = "Error: " + e.Message; + success = false; + } + + return success; +}