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);  

  • 相关阅读:
    .net开发COM组件之组件签名&注册
    msmq访问格式
    IIS宿主WCF服务*.svc Mime类型映射
    匿名方法的机种书写形式
    GMTUTC YYYY-MM-DDTHH:mm:ss.sssZ、YYYY-MM-DDTHH:mm:ss.sss+8:00意义及与北京时间转换
    允许浏览器下载exe.config文件
    WCF部署失败
    原码、补码、反码
    Java 符号引用 与 直接引用
    计算机理论基础知识
  • 原文地址:https://www.cnblogs.com/Jason-c/p/8359603.html
Copyright © 2011-2022 走看看