Я знаю, что мое приложение (на основе имени пакета) можно открыть в Google Play Store, но как сделать то же самое в Huawei AppGallery?
Непонятно, что с чего открывать. ваше приложение из галереи или гель из вашего приложения?
@VladyslavMatviienko Открой мое приложение в Huawei AppGallery.
вам нужно будет изменить код Huawei AppGallery, чтобы он открывал ваше приложение. Это единственный способ
Хорошо, братан. Вы можете использовать имя пакета. com.huawei.appmarket и используйте Intent. Здесь есть аналогичный вопрос. Запустить приложение из другого приложения на Android
Удачи тебе во всем ?
Открытие вашего приложения в галерее приложений Huawei аналогично открытию Google Play Store:
Галерея приложений Huawei использует собственную схему appmarket://:
appmarket://com.huawei.appmarketпо сравнению с Google Play магазин:
market://com.android.vendingВот отрывок для Галерея приложений Huawei:
private void startHuaweiAppGallery() {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("appmarket://details?id = " + getPackageName()));
List<ResolveInfo> otherApps = getPackageManager().queryIntentActivities(intent, 0);
boolean agFound = false;
for (ResolveInfo app : otherApps) {
if (app.activityInfo.applicationInfo.packageName.equals("com.huawei.appmarket")) {
ComponentName psComponent = new ComponentName(app.activityInfo.applicationInfo.packageName, app.activityInfo.name);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setComponent(psComponent);
startActivity(intent);
agFound = true;
break;
}
}
//Optional, Or copy the Google Play Store URL here (See below)
if (!agFound) {
//Your Huawei app ID can be found in the Huawei developer console
final string HUAWEI_APP_ID = "100864605";
//ex. https://appgallery.cloud.huawei.com/marketshare/app/C100864605
intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://appgallery.cloud.huawei.com/marketshare/app/C" + HUAWEI_APP_ID));
startActivity(intent);
}
}
Вот фрагмент для Гугл игры:
private void startGooglePlay() {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id = " + getPackageName()));
List<ResolveInfo> otherApps = getPackageManager().queryIntentActivities(intent, 0);
boolean psFound = false;
for (ResolveInfo app : otherApps) {
if (app.activityInfo.applicationInfo.packageName.equals("com.android.vending")) {
ComponentName psComponent = new ComponentName(app.activityInfo.applicationInfo.packageName, app.activityInfo.name);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setComponent(psComponent);
startActivity(intent);
psFound = true;
break;
}
}
if (!psFound) {
intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id = " + getPackageName()));
startActivity(intent);
}
}
Редактировать
Галерея приложений Huawei теперь также поддерживает тот же Схема, что и Google Play магазин: market://com.huawei.appmarket
Простой способ открыть приложение в магазине Huawei App Gallery:
public void reviewApp(String packageName){
try {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("appmarket://details?id = " + packageName));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
} catch (ActivityNotFoundException anfe) {
Toast.makeText(this, "Huawei AppGallery not found!", Toast.LENGTH_SHORT).show();
}
}
затем вызовите его из своей деятельности:
reviewApp(this.getPackageName());
или:
reviewApp("com.myapp.android");
Я согласен с @Pierre
Но я также думаю, что вы можете разрешить активность с помощью ссылок
https://appgallery8.huawei.com/#/app/C<HUAWEI_APP_ID>
или
https://appgallery.cloud.huawei.com/uowap/index.html#/detailApp/C<HUAWEI_APP_ID>?appId=C<HUAWEI_APP_ID>
Например, https://appgallery.cloud.huawei.com/uowap/index.html#/detailApp/C101652909?appId=C101652909
Будьте осторожны, чтобы C был перед HUAWEI_APP_ID.
Вы можете использовать служба значков, предоставляемая HUAWEI AppGallery для продвижения своего приложения, включая подготовку материалов для создания значка, настройку ссылки приложения и получение статистики рефереров. С помощью службы вы можете эффективно собирать статистику по загрузкам приложений в AppGallery и предоставлять пользователям услугу автоматической установки для улучшения эффекта продвижения.
Когда пользователь нажимает ваш значок в канале, он перенаправляется на страницу сведений о вашем приложении в AppGallery. Пользователь может нажать Установить, чтобы автоматически загрузить и установить ваше приложение.
Что касается того, как сделать ссылку на страницу сведений о приложении или страницу со списком приложений в AppGallery:
• Ссылка, на которую вы ссылались: здесь, ведет на страницу с подробными сведениями о приложении. Huawei поддерживает страницу сведений о приложении с помощью службы значков в AppGallery. Другими словами, вы можете заменить ссылку Google ссылкой на значок Huawei. Подробную информацию о выдаче бейджей можно получить по адресу здесь.
• В отношении размещения приложений в AppGallery компания Huawei не предоставила возможность всем разработчикам, за исключением некоторых приглашенных разработчиков.
Надеюсь на эту помощь и дайте мне знать, если возникнут вопросы.
Вот как напрямую запустить App Gallery:
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri.Builder uriBuilder = Uri.parse("https://appgallery.cloud.huawei.com/ag").buildUpon();
intent.setData(uriBuilder.build());
intent.setPackage("com.huawei.appmarket");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
Запустите Play Store / AppGallery через имя пакета.
private boolean openInStore(String uri){
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_CLEAR_TOP);
try {
startActivity(Intent.createChooser(intent,getString(R.string.open_with)));
return true;
} catch (ActivityNotFoundException anfe) {
return false;
}
}
private void startOpenInStore() {
String playStoreScheme = "market://details?id = ", huaweiScheme = "appmarket://details?id = ";
if (!openInStore(playStoreScheme+getPackageName())) {
if (!openInStore(huaweiScheme + getPackageName())) {
openInStore("https://play.google.com/store/apps/details?id = " + getPackageName());
}
}
}
Если ваше приложение уже опубликовано в галерее приложений Huawei, вы можете использовать этот URL-адрес, чтобы напрямую открыть приложение.
https://appgallery.huawei.com/#/app/C27162
Вы можете заменить appid своим собственным appid.
https://appgallery.cloud.huawei.com/appDetail?pkgName=com.huawei.appmarket
Вы можете заменить имя пакета своим собственным именем.
Желаю, чтобы это было полезно.
Кажется, Huawei App Gallery теперь может открывать страницу сведений с тем же URI, который работает для Google Play: market://details?id=<applicationId>.
Я только что попробовал это в AppGallery Версия 11.1.2.304 с applicationId, который существует в обоих магазинах:
adb shell am start -a "android.intent.action.VIEW" -d "market://details?id=busu.blackscreenbatterysaver"
Это работает, но на моем устройстве также установлен APKPure в качестве стороннего поставщика. В этом решении будет показано диалоговое окно, в котором можно решить, какое приложение магазина следует использовать для обработки намерения. Также на некоторых устройствах Huawei все еще установлены Google Play Store и Huawei App Gallery, что также может вызвать это диалоговое окно. В нашем случае это нежелательное поведение.
так каково ваше желаемое поведение?
В нашем случае мы хотим, чтобы галерея приложений Huawei открывалась автоматически, не запрашивая у пользователя предпочтительное приложение для магазина. Типичные варианты использования - это запрос рейтинга / отзыва приложения, обновление приложения или загрузка другого приложения. Во всех случаях мы не хотим, чтобы пользователь выбирал APKPure. Прямая ссылка на другое приложение обычно работает через ссылки приложений, а не простые ссылки на контент. Схема market: //, похоже, работает как обычная глубокая ссылка.
Затем, если вы хотите полностью пропустить диалог устранения неоднозначности, единственный способ - использовать глубокую ссылку со схемой appmarket://, как указал Пьер в принятом ответе. Для меня https-ссылки AppGallery не вели себя как ссылки приложений = у меня все еще есть диалоговое окно устранения неоднозначности (это правда, что при выборе браузера Huawei из списка приложений для обработки намерения он в конечном итоге запустит собственное приложение AppGallery на устройстве с деталями вашего приложения) - попробуйте `adb shell am start -a" android.intent.action.VIEW "-d" appgallery.huawei.com/#/app/C103639735 "`.
Я упомянул об универсальном решении, использующем схему market:// (вместо разных глубоких ссылок для каждого магазина), потому что это более удобно, когда вы кодируете приложение, которое хотите быть независимым от платформы.
Я думаю, что самым коротким и простым было бы использование этой простой ссылки: https://appgallery.cloud.huawei.com/ag/n/app/<YOUR_APP_ID>.
Не нужно ничего настраивать, остальное сделает Huawei автоматически.
Как получить YOUR_APP_ID?
C5683.
я думаю ты не можешь