Buenas foreros,
tengo poca experiencia en Android. Tengo que crear una aplicación en la que tendrá venta de productos, para ser más claro, mi aplicación tendrá vídeos y para poder descargarlos, el usuario tendrá que comprar los que le interesen.
Estoy mirando por internet y he visto por internet que tengo que utilizar la libreria In-App Billing. http://developer.android.com/training/in-app-billing/preparing-iab-app.html
He creado una app de prueba, la he subido a mi cuenta de google developper y he creado dos productos, como si fueran vídeos.
Aparentemente me conecta bien, pero me devuelve un NullPointerException en la línea que utilizo getSkuDetails.
Os dejo el código de mi aplicación por si alguno puede ayudarme.
Muchas gracias
public class Inicio extends Activity {
//Estableciendo conexion licencia
IInAppBillingService mService;
ServiceConnection mServiceConn = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
System.out.println("Desconecta");
mService = null;
}
@Override
public void onServiceConnected(ComponentName name,
IBinder service) {
System.out.println("Conecta");
mService = IInAppBillingService.Stub.asInterface(service);
}
};
//Fin Estableciendo conexion licencia
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_inicio);
//Estableciendo conexion licencia
bindService(new
Intent("com.android.vending.billing.InAppBillingSe rvice.BIND"),
mServiceConn, Context.BIND_AUTO_CREATE);
//Fin Estableciendo conexion licencia
comprobarregistros();
}
@Override
public void onDestroy() {
super.onDestroy();
if (mServiceConn != null) {
unbindService(mServiceConn);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.inicio, menu);
return true;
}
private void comprobarregistros() {
//Mostrar lista
Bundle querySkus = new Bundle();
try {
ArrayList skuList = new ArrayList();
skuList.add("cartas_1");
skuList.add("cartas_2");
querySkus = new Bundle();
querySkus.putStringArrayList("ITEM_ID_LIST", skuList);
} catch (Exception e){
System.out.println("error 1:" + e.getMessage());
}
try {
System.out.println("Hasta aqui todo bien");
Bundle skuDetails = mService.getSkuDetails(3,
getPackageName(), "inapp", querySkus);
System.out.println("Esto ya no aparece");
int response = skuDetails.getInt("RESPONSE_CODE");
if (response == 0) {
ArrayList<String> responseList
= skuDetails.getStringArrayList("DETAILS_LIST");
for (String thisResponse : responseList) {
JSONObject object = new JSONObject(thisResponse);
String sku = object.getString("productId");
String price = object.getString("price");
System.out.println(sku + " - " + price + "; ");
/* if (sku.equals("premiumUpgrade")) mPremiumUpgradePrice = price;
else if (sku.equals("gas")) mGasPrice = price;*/
}
}
} catch (NullPointerException e) {
System.out.println(e.getMessage());
} catch (RemoteException e){
System.out.println(e.getMessage());
} catch (Exception e){
System.out.println(e.getMessage());
}
}
}