61 lines
2.5 KiB
C#
61 lines
2.5 KiB
C#
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>().text = "Installing App";
|
|
|
|
try
|
|
{
|
|
//Get Activity then Context
|
|
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
|
|
AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
|
|
AndroidJavaObject unityContext = currentActivity.Call<AndroidJavaObject>("getApplicationContext");
|
|
|
|
//Get the package Name
|
|
string packageName = unityContext.Call<string>("getPackageName");
|
|
string authority = packageName + ".fileprovider";
|
|
|
|
AndroidJavaClass intentObj = new AndroidJavaClass("android.content.Intent");
|
|
string ACTION_VIEW = intentObj.GetStatic<string>("ACTION_VIEW");
|
|
AndroidJavaObject intent = new AndroidJavaObject("android.content.Intent", ACTION_VIEW);
|
|
|
|
|
|
int FLAG_ACTIVITY_NEW_TASK = intentObj.GetStatic<int>("FLAG_ACTIVITY_NEW_TASK");
|
|
int FLAG_GRANT_READ_URI_PERMISSION = intentObj.GetStatic<int>("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<AndroidJavaObject>("getUriForFile", unityContext, authority, fileObj);
|
|
|
|
intent.Call<AndroidJavaObject>("setDataAndType", uri, "application/vnd.android.package-archive");
|
|
intent.Call<AndroidJavaObject>("addFlags", FLAG_ACTIVITY_NEW_TASK);
|
|
intent.Call<AndroidJavaObject>("addFlags", FLAG_GRANT_READ_URI_PERMISSION);
|
|
currentActivity.Call("startActivity", intent);
|
|
|
|
//GameObject.Find("TextDebug").GetComponent<Text>().text = "Success";
|
|
}
|
|
catch (System.Exception e)
|
|
{
|
|
//GameObject.Find("TextDebug").GetComponent<Text>().text = "Error: " + e.Message;
|
|
success = false;
|
|
}
|
|
|
|
return success;
|
|
}
|