Подтвердить что ты не робот

Поддерживает ли "Samsung Apps" схему URI для перенаправления на конкретные приложения?

Один из моих клиентов очень любит продвигать версию своего полного приложения на нескольких популярных устройствах Samsung. Эта облегченная версия будет загружена на http://www.samsungapps.com, после чего пользователи смогут загрузить ее через приложение Samsung Apps, приложение. В версии Lite есть ссылка на приложение в полном приложении.

Теперь я искал веб-сайт Samsung для получения какой-либо информации о схеме URI, которую Samsung Apps может выбрать и использовать для непосредственного представления пользователю соответствующих сведений о полном приложении. Для Google Play и Amazon вы можете просто скрыть намерение с помощью определенной схемы URI и имени пакета приложений; например:

Google Play:

marketIntent.setData(Uri.parse("market://details?id=" + FULL_VERSION_PACKAGE_NAME));

Амазонка:

marketIntent.setData(Uri.parse("http://www.amazon.com/gp/mas/dl/android?p=" + FULL_VERSION_PACKAGE_NAME));

Это все документировано и довольно просто найти. Тем не менее, мне не удалось выяснить, предоставляет ли Samsung Apps собственную схему URI для подобного поведения.

Я выпускаю это, так как мы говорим об устройствах Android здесь, я могу просто связать его с Google Play. Мне просто кажется странным, что Samsung предложит рыночную систему без возможности связываться с конкретными продуктами, доступными там, поэтому я надеюсь, что что-то пропущу.

Есть ли у кого-нибудь указания на это? Обратите внимание, что у меня нет устройства (совместимого) с Samsung Apps, чтобы на самом деле что-либо проверить.

4b9b3361

Ответ 1

Итак, мне наконец удалось найти ответ на мой вопрос, спрятанный в pdf-документе. Он называется Руководство по Deeplink для Samsung Apps и может быть загружен из ресурсного центра Samsung.

Для тех, кто не заинтересован во всем документе, который содержит некоторую информацию о том, как вызывать определенные экраны в приложении Samsung Apps, ответ прост. Прикрепите URI к данным Intent в следующем формате:

samsungapps://ProductDetail/<the package name of the AndroidManifest.xml>

Например, прямая ссылка на приложение Samsung Apps в приложениях Samsung (выражение все еще имеет смысл?):

samsungapps://ProductDetail/com.sec.android.app.samsungapps

Таким образом, приложение действительно поддерживает схему URI, похожую на Google Play и Amazon, как подозревали.

Заметьте, что мне еще не удалось проверить это, но я столкнулся с недавно поднятым флагом (с 27 апреля 2012 года) что, по-видимому, эта функциональность внезапно перестала работать. Согласно ответу на этот флаг, разработчики Samsung изучают его, но я могу просто отложить это до тех пор, пока исправление не будет подтверждено.

Ответ 2

Я использую следующий код для ссылки на Google Play, Amazon Appstore и Samsung Galaxy Apps по названию пакета.

public static final String MARKET_GOOGLE_URL = "market://details?id=";
public static final String WEB_GOOGLE_URL = "http://play.google.com/store/apps/details?id=";

public static final String MARKET_SAMSUNG_URL = "samsungapps://ProductDetail/";
public static final String WEB_SAMSUNG_URL = "http://www.samsungapps.com/appquery/appDetail.as?appId=";

public static final String MARKET_AMAZON_URL = "amzn://apps/android?p=";
public static final String WEB_AMAZON_URL = "http://www.amazon.com/gp/mas/dl/android?p=";

public static void openOnMarket(String market, String web, Context context, String packageName) {

    try {
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(market + packageName));
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);
    } catch (android.content.ActivityNotFoundException anfe) {
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(web + packageName));
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);
    }

}


public static void openOnGooglePlayMarket(Context context, String packageName) {
    openOnMarket(MARKET_GOOGLE_URL, WEB_GOOGLE_URL, context, packageName);
}

public static void openOnSamsungMarket(Context context, String packageName) {
    openOnMarket(MARKET_SAMSUNG_URL, WEB_SAMSUNG_URL, context, packageName);
}

private static void openOnAmazonMarket(Context context, String packageName) {
    openOnMarket(MARKET_AMAZON_URL, WEB_AMAZON_URL, context, packageName);
}

Сначала он пытается открыть приложение для рынка по URI, но если он не найден, открывайте ссылку в Интернете. Я надеюсь, что этот код будет полезен кому-то.