zoukankan      html  css  js  c++  java
  • Unity 模拟点击Home键和启动其他app

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class NewBehaviourScript : MonoBehaviour {
    
    
        private AndroidJavaObject currentActivity{
    
            get{ 
                return new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");
            }
    
        }
        //启动应用
        public void StartApp(string packageName,bool isExitThisApp){
            if(Application.platform != RuntimePlatform.Android)
                return;
            AndroidJavaObject launch = currentActivity.Call<AndroidJavaObject>("getPackageManager").Call<AndroidJavaObject>("getLaunchIntentForPackage",packageName);
            currentActivity.Call("startActivity",launch);
            if(isExitThisApp){
                Application.Quit();
            }
        }
        //模拟点击Home键
        void GoHome1()
        {
            string ACTION_MAIN = "android.intent.action.MAIN";
            int FLAG_ACTIVITY_NEW_TASK = 268435456;
            string CATEGORY_HOME = "android.intent.category.HOME";
    
            AndroidJavaObject intent=new AndroidJavaObject("android.content.Intent",ACTION_MAIN);
            intent.Call<AndroidJavaObject> ("setFlags",FLAG_ACTIVITY_NEW_TASK);
            intent.Call<AndroidJavaObject> ("addCategory", CATEGORY_HOME);
            currentActivity.Call("startActivity",intent);
        }
        //模拟点击Home键
        void GoHome2()
        {
            AndroidJavaClass Intent = new AndroidJavaClass ("android.content.Intent");
            AndroidJavaObject intent=new AndroidJavaObject("android.content.Intent",Intent.GetStatic<AndroidJavaObject>("ACTION_MAIN"));
    
            //        intent.Call<AndroidJavaObject> ("setFlags",Intent.GetStatic<AndroidJavaObject> ("FLAG_ACTIVITY_NEW_TASK"));//不知道什么原因,这样写居然报错,
            int FLAG_ACTIVITY_NEW_TASK = Intent.GetStatic<int> ("FLAG_ACTIVITY_NEW_TASK");//非得需要用个变量接收一下,而且用AndroidJavaObject接收也报错,坑
            intent.Call<AndroidJavaObject> ("setFlags",FLAG_ACTIVITY_NEW_TASK);
    
            intent.Call<AndroidJavaObject> ("addCategory",Intent.GetStatic<AndroidJavaObject> ("CATEGORY_HOME"));
            currentActivity.Call("startActivity",intent);
        }
    
        void Update()
        {
            if (Input.GetMouseButtonDown(0)) {
    //            GoHome1 ();
                GoHome2 ();
            }
        }
    
    
    }

    已上代码不需要引用任何 jar 包,直接可以用

    是通过以下java代码变形而来的

    Intent intent = new Intent(Intent.ACTION_MAIN);  

    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    intent.addCategory(Intent.CATEGORY_HOME);

    startActivity(intent);  

  • 相关阅读:
    机会主义和理想主义
    从 http://snowolf.iteye.com/blog/735294 收藏 Java加密技术(十二)——*.PFX(*.p12)&个人信息交换文件
    Demystifying ‘Sys is undefined’
    server.mappath
    C# 发送http请求的几类方法
    几款用于防破解的软件
    机器学习之嵌套交叉验证
    机器学习之生成多项式和交互特征
    机器学习之调参
    dataframe列联表等操作
  • 原文地址:https://www.cnblogs.com/Jason-c/p/8359603.html
Copyright © 2011-2022 走看看