studio sirve que putextra para intent intenciones getintextra android android-intent

android - sirve - ¿''Samsung Apps'' admite un esquema de URI para redireccionar a aplicaciones específicas?



intentfilter android (4)

Uno de mis clientes está interesado en promocionar una versión ''lite'' de su aplicación completa en una serie de dispositivos populares de Samsung. Esta versión lite se cargará en http://www.samsungapps.com , y los usuarios podrán descargarla a través de la aplicación ''Samsung Apps'' . La versión lite presenta un enlace en la aplicación completa.

Ahora, he estado buscando en el sitio web de Samsung cualquier información sobre un esquema de URI que Samsung Apps pueda recoger y utilizar para presentar directamente al usuario los detalles relevantes de la aplicación completa. Tanto para Google Play como para Amazon, simplemente puede activar un intento con un esquema de URI específico y el nombre del paquete de la aplicación; p.ej:

Google Play:

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

Amazonas:

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

Eso está todo documentado y es bastante sencillo de encontrar. Sin embargo, no he podido averiguar si Samsung Apps ofrece su propio esquema de URI para un comportamiento similar.

Sueldo que ya que estamos hablando de dispositivos Android aquí, podría simplemente vincular a Google Play. Me parece extraño que Samsung ofrezca un sistema similar al mercado sin la posibilidad de vincularse a productos específicos disponibles allí, así que espero estar pasando por alto algo.

¿Alguien tiene alguna sugerencia sobre esto? Tenga en cuenta que no tengo un dispositivo (compatible) con Samsung Apps para probar realmente nada.



Así que finalmente logré encontrar la respuesta a mi pregunta oculta en un documento pdf. Se titula "Guía de Deeplink de aplicaciones de Samsung" y se puede descargar desde el centro de recursos de Samsung.

Para quienes no estén interesados ​​en el documento completo, que contiene información sobre cómo invocar pantallas específicas en la aplicación Samsung Apps, la respuesta es sencilla. Adjunte un URI a los datos del Intent con el siguiente formato:

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

Por ejemplo, un enlace directo a la aplicación Samsung Apps en Samsung Apps (¿aún tiene sentido la fraseología?) Sería:

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

Por lo tanto, la aplicación es compatible con un esquema de URI similar a Google Play y Amazon, como se sospecha.

Tenga en cuenta que todavía no he podido probar esto, pero me encontré con una bandera que surgió recientemente (desde el 27 de abril de 2012) que aparentemente esta funcionalidad dejó de funcionar repentinamente. De acuerdo con una respuesta a esa bandera, los desarrolladores de Samsung lo están investigando, pero puede que no lo haga hasta que se confirme una solución.


Utilizo el siguiente código para vincular a Google Play, Amazon Appstore y Samsung Galaxy Apps por nombre del paquete.

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

Al principio, intenta abrir la aplicación de mercado por URI, pero si no se encuentra, abre el enlace web. Espero que este código sea útil para alguien.