以编程方式隐藏图标c#

时间:2016-12-08 09:19:44

标签: c# android unity3d package-managers

我一直在尝试使用c#统一隐藏应用图标。我尝试在下面实现android代码:

    PackageManager p = getPackageManager();
    ComponentName componentName = new ComponentName(this,com.apps.MainActivity.class); // activity which is first time open in manifiest file which is declare as <category android:name="android.intent.category.LAUNCHER" />
    p.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

所以,我的代码是:

AndroidJavaClass up = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject ca = up.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject packageManager = ca.Call<AndroidJavaObject>("getPackageManager");
AndroidJavaClass cn = new AndroidJavaClass ("android.content.ComponentName");

launchIntent = packageManager.Call<AndroidJavaObject>("getLaunchIntentForPackage",bundleId);
packageManager.Call<AndroidJavaObject>("setComponentEnabledSetting",cn,packageManager.Get<int>("COMPONENT_ENABLED_STATE_DISABLED"),packageManager.Get<int>("DONT_KILL_APP"));
ca.Call ("startActivity", launchIntent);

cn.Dispose ();
up.Dispose();
ca.Dispose();
packageManager.Dispose();
launchIntent.Dispose();

当我为android构建并运行时,指示packagemanager的行未被调用。我在这里错过了什么?请帮忙!

2 个答案:

答案 0 :(得分:0)

如果您有apk的清单文件,那么通过删除清单中的启动器类别,您可以隐藏您的应用程序。只有声明为启动器的应用程序才会在屏幕上显示。 我可以知道你为什么要以编程方式隐藏它们吗?

答案 1 :(得分:0)

如果您有apk的清单文件,那么通过删除清单中的启动器类别,您可以隐藏您的应用程序。只有声明为启动器的应用程序才会在屏幕上显示。您需要使用广播接收器启动没有启动器类别的应用程序。 我可以知道你为什么要以编程方式隐藏它们。为什么不为包管理器创建一个Java对象,就像你为当前活动所做的一样。