Guixe94
13/08/14, 14:11:02
Hola,
en mi app tengo una "version pro" que se desbloquea al comprar un producto dentro de la misma app (utilizo InAppBilling). La compra del producto se realiza en un fragment cuando este se compra en el mismo fragment aparece las funciones pro (son dos LinearLayout, al comprar el primero cambia su visibilidad a "gone" y el segundo a "visible"). Como podria hacer para que al iniciar la app directamente se cambiasen las visibilidades si las el producto esta comprado? o si eso es muy complicado (ya que esta en un fragment y eso) pues que se cambiase al iniciar el fragment. el codigo de compra es este:
private void startBuyProcess(){
String clave = "MIIBIjANBgkqhkiG90uX2SMTlh50JXLVKabCPODOiH1AW00lEn BkYSCF5be1jQIDAQAB";
billingHelper = new IabHelper(this, clave);
billingHelper.startSetup(this);
}
@Override
public void onIabSetupFinished(IabResult result) {
if (result.isSuccess()) {
try{
if(billingHelper.queryInventory(true, null).hasPurchase(MainActivity.SKU)){
Toast.makeText(this, "Licencia Correcta", Toast.LENGTH_SHORT).show();
getSupportFragmentManager().findFragmentById(R.id. content_frame);
scrollpro1 = (ScrollView)findViewById(R.id.scrollpro1);
scrollpro2 = (ScrollView)findViewById(R.id.scrollpro2);
scrollpro1.setVisibility(View.GONE);
scrollpro2.setVisibility(View.VISIBLE);
// startActivity(new Intent(MainActivity.this,Pro.class));
compraCorrecta();
} else {
compraElemento();
}
} catch(IabException e){
e.printStackTrace();
}
} else {
errorAlIniciar();
}
}
protected void errorAlIniciar() {
Toast.makeText(MainActivity.this, "Error al intentar iniciar la compra", Toast.LENGTH_SHORT).show();
}
protected void compraElemento() {
purchaseItem(MainActivity.SKU);
}
protected void purchaseItem(String sku) {
billingHelper.launchPurchaseFlow(this, sku, 123, this);
}
@Override
public void onIabPurchaseFinished(IabResult result, Purchase info) {
if (result.isFailure()) {
compraFallida();
} else if (MainActivity.SKU.equals(info.getSku())) {
compraCorrecta();
// Consumimos los elementos a fin de poder probar varias compras
billingHelper.consumeAsync(info, null);
}
}
/*
* COSAS QUE QUERAMOS HACER CUANDO SE HAYA
* ADQUIRIDO EL PRODUCTO CON EXITO
*/
protected void compraCorrecta() {
getSupportFragmentManager().findFragmentById(R.id. content_frame);
scrollpro1 = (ScrollView)findViewById(R.id.scrollpro1);
scrollpro2 = (ScrollView)findViewById(R.id.scrollpro2);
scrollpro1.setVisibility(View.GONE);
scrollpro2.setVisibility(View.VISIBLE);
}
/*
* COSAS QUE QUERAMOS HACER CUANDO EL PRODUCTO
* NO HAYA SIDO ADQUIRIDO
*/
protected void compraFallida(){
}
//LIMPIAMOS
@Override
protected void onDestroy() {
disposeBillingHelper();
super.onDestroy();
}
private void disposeBillingHelper() {
if (billingHelper != null) {
billingHelper.dispose();
}
billingHelper = null;
}
private Boolean isUpgrade(Context context)
{
SharedPreferences prefs = context.getSharedPreferences("prefs", Context.MODE_PRIVATE);
return prefs.getBoolean("upgrade", false);
}
private void setUpgrade(Context context, Boolean value)
{
SharedPreferences prefs = context.getSharedPreferences("prefs", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = prefs.edit();
edit.putBoolean("upgrade", value);
edit.commit();
}
///// Fin compras
Y el fragment lo llamo des de el NavigationDrawer lateral con el siguiente codigo:
private void MostrarFragment(int position) {
// update the main content by replacing fragments
Fragment fragment = null;
switch (position) {
case 1:
fragment = new HomeFragment();
break;
case 2:
fragment = new ProfileFragment();
break;
case 3:
fragment = new Redstone();
break;
case 4:
fragment = new ComandosIDS();
break;
case 5:
fragment = new Tutoriales();
break;
case 6:
fragment = new Trucos();
break;
case 7:
fragment = new Youtubers();
break;
case 8:
fragment = new PurchaseActivity();
break;
case 9:
fragment = new AcercaDe();
break;
GRACIAS!
en mi app tengo una "version pro" que se desbloquea al comprar un producto dentro de la misma app (utilizo InAppBilling). La compra del producto se realiza en un fragment cuando este se compra en el mismo fragment aparece las funciones pro (son dos LinearLayout, al comprar el primero cambia su visibilidad a "gone" y el segundo a "visible"). Como podria hacer para que al iniciar la app directamente se cambiasen las visibilidades si las el producto esta comprado? o si eso es muy complicado (ya que esta en un fragment y eso) pues que se cambiase al iniciar el fragment. el codigo de compra es este:
private void startBuyProcess(){
String clave = "MIIBIjANBgkqhkiG90uX2SMTlh50JXLVKabCPODOiH1AW00lEn BkYSCF5be1jQIDAQAB";
billingHelper = new IabHelper(this, clave);
billingHelper.startSetup(this);
}
@Override
public void onIabSetupFinished(IabResult result) {
if (result.isSuccess()) {
try{
if(billingHelper.queryInventory(true, null).hasPurchase(MainActivity.SKU)){
Toast.makeText(this, "Licencia Correcta", Toast.LENGTH_SHORT).show();
getSupportFragmentManager().findFragmentById(R.id. content_frame);
scrollpro1 = (ScrollView)findViewById(R.id.scrollpro1);
scrollpro2 = (ScrollView)findViewById(R.id.scrollpro2);
scrollpro1.setVisibility(View.GONE);
scrollpro2.setVisibility(View.VISIBLE);
// startActivity(new Intent(MainActivity.this,Pro.class));
compraCorrecta();
} else {
compraElemento();
}
} catch(IabException e){
e.printStackTrace();
}
} else {
errorAlIniciar();
}
}
protected void errorAlIniciar() {
Toast.makeText(MainActivity.this, "Error al intentar iniciar la compra", Toast.LENGTH_SHORT).show();
}
protected void compraElemento() {
purchaseItem(MainActivity.SKU);
}
protected void purchaseItem(String sku) {
billingHelper.launchPurchaseFlow(this, sku, 123, this);
}
@Override
public void onIabPurchaseFinished(IabResult result, Purchase info) {
if (result.isFailure()) {
compraFallida();
} else if (MainActivity.SKU.equals(info.getSku())) {
compraCorrecta();
// Consumimos los elementos a fin de poder probar varias compras
billingHelper.consumeAsync(info, null);
}
}
/*
* COSAS QUE QUERAMOS HACER CUANDO SE HAYA
* ADQUIRIDO EL PRODUCTO CON EXITO
*/
protected void compraCorrecta() {
getSupportFragmentManager().findFragmentById(R.id. content_frame);
scrollpro1 = (ScrollView)findViewById(R.id.scrollpro1);
scrollpro2 = (ScrollView)findViewById(R.id.scrollpro2);
scrollpro1.setVisibility(View.GONE);
scrollpro2.setVisibility(View.VISIBLE);
}
/*
* COSAS QUE QUERAMOS HACER CUANDO EL PRODUCTO
* NO HAYA SIDO ADQUIRIDO
*/
protected void compraFallida(){
}
//LIMPIAMOS
@Override
protected void onDestroy() {
disposeBillingHelper();
super.onDestroy();
}
private void disposeBillingHelper() {
if (billingHelper != null) {
billingHelper.dispose();
}
billingHelper = null;
}
private Boolean isUpgrade(Context context)
{
SharedPreferences prefs = context.getSharedPreferences("prefs", Context.MODE_PRIVATE);
return prefs.getBoolean("upgrade", false);
}
private void setUpgrade(Context context, Boolean value)
{
SharedPreferences prefs = context.getSharedPreferences("prefs", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = prefs.edit();
edit.putBoolean("upgrade", value);
edit.commit();
}
///// Fin compras
Y el fragment lo llamo des de el NavigationDrawer lateral con el siguiente codigo:
private void MostrarFragment(int position) {
// update the main content by replacing fragments
Fragment fragment = null;
switch (position) {
case 1:
fragment = new HomeFragment();
break;
case 2:
fragment = new ProfileFragment();
break;
case 3:
fragment = new Redstone();
break;
case 4:
fragment = new ComandosIDS();
break;
case 5:
fragment = new Tutoriales();
break;
case 6:
fragment = new Trucos();
break;
case 7:
fragment = new Youtubers();
break;
case 8:
fragment = new PurchaseActivity();
break;
case 9:
fragment = new AcercaDe();
break;
GRACIAS!