¿Cómo utilizo la API no oficial de Android Market?
Estoy probando el código de ejemplo desde here
. Pero mi aplicación se está estrellando.
Añadí registro y descubrí que se está bloqueando en session.flush();
Así que quité esa línea y no se bloquea más.
- Android NullpointerException al intentar recuperar datos de SQLiteOpenHelper
- pasar referencia como parámetro en android
- Desmarcando archivos XML en objetos Java en Android?
- Cómo anular la barra de acción de nuevo en el botón de android?
- vuforia AR SDK - no se puede reproducir video por url
Pero no llega a la onResult
llamada onResult
.
package com.mytest.app; import com.gc.android.market.api.MarketSession; import com.gc.android.market.api.MarketSession.Callback; import com.gc.android.market.api.model.Market.AppsRequest; import com.gc.android.market.api.model.Market.AppsResponse; import com.gc.android.market.api.model.Market.ResponseContext; import android.app.Activity; import android.os.Bundle; import android.provider.Settings.Secure; import android.util.Log; public class MarketAPITestActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.d("Market API", "Started"); String email = "[email protected]"; String pass = "mypass"; String AndroidId = Secure.getString(this.getContentResolver(), Secure.ANDROID_ID); MarketSession session = new MarketSession(); session.login(email,pass); session.getContext().setAndroidId(AndroidId); String query = "maps"; AppsRequest appsRequest = AppsRequest.newBuilder() .setQuery(query) .setStartIndex(0).setEntriesCount(10) .setWithExtendedInfo(true) .build(); session.append(appsRequest, new Callback<AppsResponse>() { @Override public void onResult(ResponseContext context, AppsResponse response) { Log.d("Market API", "Got response"); } }); session.flush(); } }
- Android: ¿cómo no mostrar permanentemente y por completo el teclado virtual predeterminado para un EditText?
- Cómo agregar HashMap a ArrayList
- Recyclerview cambia la posición del artículo automáticamente cuando se desplaza
- newInstance () con Java personalizado genérico?
- Tarea Simple de Reconocimiento de Imágenes en Android: Dominó Lectura
- Reconocimiento de voz Java como androides
- Pantalla Android Parpadea en mostrar / ocultar barras del sistema
- Editar encabezados de MultiPartEntity
Hay un problema con androidId
. En lugar de:
String AndroidId = Secure.getString(this.getContentResolver(), Secure.ANDROID_ID);
Utilizar esta:
String AndroidId = "dead000beef";
Funciona.
Sugiero encarecidamente que eche un vistazo a https://groups.google.com/forum/#!forum/android-market-api (el único lugar que conozco que sigue siendo activo acerca de la API de Android Market).
Tenga en cuenta que el método de autenticación (login / pwd) es más que obsoleto ahora (y no seguro), y puede que ya no sea compatible con el protocolo de mercado actual.
También un id android válido ya no es tan simple como antes de recuperarse, ver los grupos para eso también.
Esto no es Secure.ANDROID_ID, es el ID del dispositivo de servicio Gtalk.
Puede utilizar el código siguiente:
public String getDeviceId(Context context) { String[] params = { GSERVICES_ID_KEY }; Cursor c = context.getContentResolver() .query(GSERVICES_URI, null, null, params, null); if (!c.moveToFirst() || c.getColumnCount() < 2) return null; try { return Long.toHexString(Long.parseLong(c.getString(1))).toUpperCase(); } catch (NumberFormatException e) { return null; } }
Y agrega el permiso para leer Gservice
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>