• ¿Quieres apoyar a nuestro foro haciendo una donación?, entra aquí.

Logran crear una aplicación para cargar tarjeta bip!

Estado
No está abierto para más respuestas.
Existe una apk que no hayan manoseado?. Les cuento mi experiencia, cargué una tarjeta de crédito dada de baja, (una Mastercard del Santander que venció el 2010), venció y todo eso, la probé y funciona. Es raro, porque puse el número de tarjeta bip en la web para consultar saldo y no arroja saldo, tampoco dice contrato vigente ni nada, pero en el metro funcionó.

Enviado desde mi HTC One_M8 mediante Tapatalk
 
Ah, tengo la primera app que apareció, no he buscado otra, si les interesa la subo.

Enviado desde mi HTC One_M8 mediante Tapatalk
 
y pa que te picai? andai tan desesperado buscando la apk que no sabi ni buscar queri que te la cargue tambien? no se te vaya a ocurrir cargar el pase aweonao
tan miserable es tu vida que se infla el pecho al tiro por saber UNA cosa mas que otra persona :hands:[DOUBLEPOST=1414258735,1414258610][/DOUBLEPOST]
Ah, tengo la primera app que apareció, no he buscado otra, si les interesa la subo.

Enviado desde mi HTC One_M8 mediante Tapatalk
me parece que la primera version es la que todos tienen. incluso mas atras la vi posteada piola.
 
Solo les digo no instalen si les pide permiso para conectarse a Internet, solo nfc. La versión 1.5 que baje no pide conexión a Internet.

Enviado desde mi SM-G900H mediante Tapatalk
 
Yo tengo la 1.1 y la 1.5, si la keren la puedo compartir. Siempre y cuando nadie se oponga o moleste...
 
Oka
y hay muchas más versiones?, de verdad me llamó la atención pero no la usaría, hace rarto que no vivo en Santiago.

Enviado desde mi HTC One_M8 mediante Tapatalk
 
La 1.5 revisaste que no pide conexión a Internet?. Yo i gut tengo las 2. Otra cosa, para instalar la 1.5 hay que desinstalar k a 1.1 previamente.

Enviado desde mi SM-G900H mediante Tapatalk
 
tan miserable es tu vida que se infla el pecho al tiro por saber UNA cosa mas que otra persona :hands:[DOUBLEPOST=1414258735,1414258610][/DOUBLEPOST]
me parece que la primera version es la que todos tienen. incluso mas atras la vi posteada piola.
igual andai desesperado buscandola jajajajjaa
 
Me quedé atrás, jajaja que diferencia tiene la 1.5?

Enviado desde mi HTC One_M8 mediante Tapatalk
 
Me quedé atrás, jajaja que diferencia tiene la 1.5?

Enviado desde mi HTC One_M8 mediante Tapatalk
Carga saldo que tu quieras, en teoría debería ser más pega para sonda, ya que no sólo restrarian las de 10k

Enviado desde mi SM-G900H mediante Tapatalk
 
Wena
Bueno, desde mi área les anticipo, probar el delito es más pega, jajaja

Enviado desde mi HTC One_M8 mediante Tapatalk
 
La 1.5 revisaste que no pide conexión a Internet?. Yo i gut tengo las 2. Otra cosa, para instalar la 1.5 hay que desinstalar k a 1.1 previamente.

Enviado desde mi SM-G900H mediante Tapatalk


Si en la 1.5 solo pide permiso para usar el NFC nada mas... Lo otro seria que decompilaran la aplicacion y la revisaran bien...
 
Tienes link?, o mandamela y la subo yo.

Enviado desde mi HTC One_M8 mediante Tapatalk
 
La 1.5.
  • apk: ow.ly/DkSEP
  • src: ow.ly/DkSGz
MainActivity.java
Código:
package com.example.puntobip;

import java.io.IOException;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.IntentFilter.MalformedMimeTypeException;
import android.nfc.NfcAdapter;
import android.nfc.Tag;
import android.nfc.tech.MifareClassic;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
    private final String MONTO_DEFAULT = "2000";
   
    private TapDialog tapDialog;
   
    private NfcAdapter mNfcAdapter;
    private PendingIntent mPendingIntent;
    private IntentFilter[] mFilters;
    private String[][] mTechList;
   
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tapDialog = new TapDialog(this, getResources().getString(R.string.consultar_saldo)).display();
        inicializarNFC();
    }
   
    public void onCargarSaldo(View view) {
        String txtSaldo = ((TextView)findViewById(R.id.tvSaldoBIP)).getText().toString().replace("$", "");
        tapDialog = new TapDialog(this, getResources().getString(R.string.cargar_saldo)).displayCargar(txtSaldo.isEmpty() ? MONTO_DEFAULT : txtSaldo);
    }
   
    public void onCambiarNumero(View view) {
        TextView tvNumeroBIP = (TextView)findViewById(R.id.tvNumeroBIP);
        tapDialog = new TapDialog(this, getResources().getString(R.string.cambiar_numero)).displayNumero(tvNumeroBIP.getText().toString());
    }
   
    private void inicializarNFC() {
        mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
        if (mNfcAdapter == null) {
            Toast.makeText(this, "Este dispositivo no soporta NFC.", Toast.LENGTH_LONG).show();
            finish();
            return;
        }
       
        if (!mNfcAdapter.isEnabled()) {
            AlertDialog alertDialog = new AlertDialog.Builder(this).create();
            alertDialog.setTitle("NFC deshabilitado");
            alertDialog.setMessage("Su NFC esta deshabilitado.\nIngrese a las opciones de configuracion y activelo.");
            alertDialog.show();
        }
       
        mPendingIntent = PendingIntent.getActivity(this, 0,
                new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
       
        IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED);
        try {
            ndef.addDataType("*/*");
        } catch (MalformedMimeTypeException e) {
            throw new RuntimeException("error", e);
        }
       
        mFilters = new IntentFilter[] {ndef};
        mTechList = new String[][] { new String[] { MifareClassic.class.getName() } };
    }
   
    @Override
    protected void onResume() {
        super.onResume();
       
        mNfcAdapter.enableForegroundDispatch(this, mPendingIntent, mFilters, mTechList);
    }
   
    @Override
    protected void onPause() {
        super.onPause();
       
        mNfcAdapter.disableForegroundDispatch(this);
    }
   
    @Override
    protected void onNewIntent(Intent intent) {
        String action = intent.getAction();
       
        if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(action)) {
            Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
            MifareManager mifare = new MifareManager(tagFromIntent);
           
            try {
                mifare.open();
                if(tapDialog.isShowing()) {
                    procesarOperacion(tapDialog, mifare);
                }
                desplegarDatosTarjeta(mifare);
            } catch (AuthenticateException e) {
                Log.e("error", "error autenticando sector", e);
                Toast.makeText(this, "error autenticando sector " + e.getSector(), Toast.LENGTH_LONG).show();
            } catch (Exception e) {
                Log.e("error", "error desconocido", e);
                Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
            } finally {
                if(tapDialog != null) tapDialog.dismiss();
                mifare.close();
            }
           
        }
    }
   
    /**
     * Despliega datos de tarjeta
     * @param mifare
     * @throws IOException
     * @throws AuthenticateException
     */
    private void desplegarDatosTarjeta(MifareManager mifare) throws IOException, AuthenticateException {
        TextView tvNumeroUUID = (TextView)findViewById(R.id.tvNumeroUUID);
        TextView tvNumeroBIP = (TextView)findViewById(R.id.tvNumeroBIP);
        TextView tvSaldoBIP = (TextView)findViewById(R.id.tvSaldoBIP);
        byte[] data;
       
        // uuid
        tvNumeroUUID.setText(Utils.leToNumericString(mifare.getTag().getId(), 4));
       
        // numero bip
        data = mifare.readBlock(0x01);
        tvNumeroBIP.setText(Utils.leToNumericString(new byte[]{data[4],data[5],data[6],data[7]}, 4));
       
        // saldo bip
        data = mifare.readBlock(0x21);
        tvSaldoBIP.setText(Utils.formatMoneda(Utils.leToNumeric(data, 2)));
    }
   
    /**
     * Procesa una operacion sobre la tarjeta
     * @param tapDialog
     * @param mifare
     * @throws IOException
     * @throws AuthenticateException
     */
    private void procesarOperacion(TapDialog tapDialog, MifareManager mifare) throws IOException, AuthenticateException {
        switch (tapDialog.getTag()) {
       
        case Constants.DIALOG_CARGAR:
            String txtMontoCargar = ((EditText)tapDialog.findViewById(R.id.etMontoCargar)).getText().toString();
            int montoCargar = (txtMontoCargar.length() == 0) ? 0 : Integer.parseInt(txtMontoCargar);
           
            mifare.writeValue(0x21, montoCargar);
            mifare.writeValue(0x22, montoCargar);
            break;

        case Constants.DIALOG_NUMERO:
            String txtNumeroBip = ((EditText)tapDialog.findViewById(R.id.etNumeroBip)).getText().toString();
            long numeroBip = (txtNumeroBip.length() == 0) ? 0 : Long.parseLong(txtNumeroBip);
           
            byte[] data = mifare.readBlock(0x01);
            data[4] = (byte) (numeroBip >>> 0);
            data[5] = (byte) (numeroBip >>> 8);
            data[6] = (byte) (numeroBip >>> 16);
            data[7] = (byte) (numeroBip >>> 24);
            mifare.writeBlock(0x01, data);
            break;
       
        }
    }
   
}
 
y pensar que hay weones que estan dispuestos hasta a arriesgar demandas por un poco de fama en un foro :nonono:
 
Estado
No está abierto para más respuestas.
Volver
Arriba