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

转载于:https://www.cnblogs.com/Jason-c/p/8359603.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值