Unity: как динамически менять значок приложения без дублированияC#

Место общения программистов C#
Ответить
Anonymous
 Unity: как динамически менять значок приложения без дублирования

Сообщение Anonymous »

Я разрабатываю функцию изменения значка приложения в моем приложении для Android. Однако я столкнулся с проблемой, когда значок приложения дублируется во всех случаях, за исключением изменения значка по умолчанию.
Желаемое поведение:
Когда значок приложения изменен, должен отображаться только один значок без дублирования.
Описание проблемы:
Я использую класс LauncherIcons для изменения приложения значок и попробовал различные варианты установки значка. Я также очистил кеш и перезагрузил устройство, но проблема не устранена.
Запрос о помощи:
Как решить проблему дублирования значков приложений ?
Как изменить значок приложения без дублирования?
Есть ли какая-нибудь соответствующая информация о коде или конфигурации?
Заранее благодарим за помощь.
Выбрать сразу после установки и основное действие
Выбрать псевдоним OneLauncher (изменить значок приложения)
// MainActivity в проекте Android Studio< /p>
..
..
public void ChangeIcon(Context context, String[] iconList, String iconType) throws IOException, ClassNotFoundException {
PackageManager manager = context.getPackageManager();

ComponentName mainComponentName = getComponentName();

int actionType = 0;

for (int i = 0; i < iconList.length; i++) {
if (iconList.equals(iconType)) {
actionType = PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
} else {
actionType = PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
}

String packageName = String.format("%s.%s", getClass().getPackage().getName(), iconList);
ComponentName componentName = new ComponentName(context, packageName);
manager.setComponentEnabledSetting(new ComponentName(context, String.format("%s.%s", getClass().getPackage().getName(), iconList)),
actionType, PackageManager.DONT_KILL_APP);
}
}
..
..

// AndroidManifest.xml в проекте Android Studio






































// AppIconChange в проекте Unity
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class TestScript : MonoBehaviour
{
public Button _toast;
public Button _main;
public Button _appIcon01;
public Button _appIcon02;
public Button _appIcon03;

private AndroidJavaObject activityContext = null;
private AndroidJavaClass javaClass = null;
private AndroidJavaObject javaClassInstance = null;
private string[] IconTypeArr = { "MainActivity", "OneLauncherAlias", "TwoLauncherAlias", "ThreeLauncherAlias" };

private void Awake()
{
using (AndroidJavaClass activityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
activityContext = activityClass.GetStatic("currentActivity");
}

using (javaClass = new AndroidJavaClass("com.test.testApp.player.MainActivity"))
{
if (javaClass != null)
{
javaClassInstance = javaClass.CallStatic("instance");
}
}

_toast.onClick.AddListener(OnClickToast);
_main.onClick.AddListener(OnClickChangeAppIcon_Main);
_appIcon01.onClick.AddListener(OnClickChangeAppIcon_1);
_appIcon02.onClick.AddListener(OnClickChangeAppIcon_2);
_appIcon03.onClick.AddListener(OnClickChangeAppIcon_3);
}

private void OnClickToast()
{
javaClassInstance.Call("ShowToast", activityContext, "테스트 토스트 메세지 출력 ^^");
}

private void OnClickChangeAppIcon_Main()
{
javaClassInstance.Call("ChangeIcon", activityContext, IconTypeArr, "MainActivity");
javaClassInstance.Call("ShowToast", activityContext, "기본 앱 아이콘으로 변경");
}

private void OnClickChangeAppIcon_1()
{
javaClassInstance.Call("ChangeIcon", activityContext, IconTypeArr, "OneLauncherAlias");
javaClassInstance.Call("ShowToast", activityContext, "커스텀 아이콘 1번으로 변경");
}

private void OnClickChangeAppIcon_2()
{
javaClassInstance.Call("ChangeIcon", activityContext, IconTypeArr, "TwoLauncherAlias");
javaClassInstance.Call("ShowToast", activityContext, "커스텀 아이콘 2번으로 변경");
}

private void OnClickChangeAppIcon_3()
{
javaClassInstance.Call("ChangeIcon", activityContext, IconTypeArr, "ThreeLauncherAlias");
javaClassInstance.Call("ShowToast", activityContext, "커스텀 아이콘 3번으로 변경");
}
}


Добавлен фильтр отслеживания намерений в активности «MainActivity», но проблема все равно возникла.






Подробнее здесь: https://stackoverflow.com/questions/781 ... uplication
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»