Naar content
Trending apps
  • Inbox by Gmail

  • Maps: Navigatie en OV

  • WhatsApp Messenger

  • Messenger

  • Facebook

Trending games
  • Minecraft Earth

  • Dr. Mario World

  • Harry Potter: Wizards Unite

  • Breaking Bad: Criminal Elements

  • The Elder Scrolls: Blades

Trending smartphones
  • Samsung Galaxy Z Flip

  • Samsung Galaxy Note 10 Lite

  • Realme X2 Pro

  • Samsung Galaxy S20 Ultra

  • Moto G8 Plus

Nieuwste tablets
  • Samsung Galaxy Tab S6

  • Samsung Galaxy Tab A 10.5

  • Samsung Galaxy Tab S4

  • Samsung Galaxy Tab S3 9.7

  • Asus Zenpad 3S 10

Timelord

Timelord

  • Lid sinds 05 juni 2010
  • Berichten 2361
  • Reputatie 20
  • #1
  • 23 december 2014
  • 22:51

Na veel trial en error heb ik de testapp bijna klaar. (dat denk ik tenminste)
Ik hou nog op 1 regel twee errors over.
Wil er iemand eens naar kijken en waar nodig aangeven wat er anders moet ?
En vooral, hoe krijg ik die 2 fouten weg ?

Hier is het rood:
new AESObfuscator(SALT, getPackageName(), deviceId)),

de rode woorden:
SALT en deviceId

package blue.peter.nl.myapplication;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.TextView;
import com.google.android.vending.licensing.AESObfuscator;
import com.google.android.vending.licensing.LicenseChecker;
import com.google.android.vending.licensing.LicenseCheckerCallback;
import com.google.android.vending.licensing.Policy;
import com.google.android.vending.licensing.ServerManagedPolicy;
public class MainActivity extends Activity {
    private LicenseCheckerCallback mLicenseCheckerCallback;
    private LicenseChecker mChecker;
    private Handler mHandler;
    Button mCheckLicenseButton;
    TextView mStatusText;
    private static final String BASE64_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkItn5E......";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mCheckLicenseButton = (Button) findViewById(R.id.mCheckLicenseButton);
        mStatusText = (TextView) findViewById(R.id.mStatusText);
        // Construct the LicenseCheckerCallback. The library calls this when done.
    //  mLicenseCheckerCallback = new MyLicenseCheckerCallback();
        mHandler = new Handler();
        // Construct the LicenseChecker with a Policy.
        mChecker = new LicenseChecker(
                this, new ServerManagedPolicy(this,
                new AESObfuscator(SALT, getPackageName(), deviceId)),
                BASE64_PUBLIC_KEY  // Your public licensing key.
        );
// Call a wrapper method that initiates the license check
        doCheck();
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
    private void doCheck() {
        mCheckLicenseButton.setEnabled(false);
        setProgressBarIndeterminateVisibility(true);
        mStatusText.setText(R.string.checking_license);
        mChecker.checkAccess(mLicenseCheckerCallback);
    }
    public void allow(int reason) {
        if (isFinishing()) {
            // Don't update UI if Activity is finishing.
            return;
        }
        // Should allow user access.
        displayResult(getString(R.string.allow));
    }
    public void dontAllow(int reason) {
        if (isFinishing()) {
            // Don't update UI if Activity is finishing.
            return;
        }
        displayResult(getString(R.string.dont_allow));
        if (reason == Policy.RETRY) {
            // If the reason received from the policy is RETRY, it was probably
            // due to a loss of connection with the service, so we should give the
            // user a chance to retry. So show a dialog to retry.
       //     showDialog(DIALOG_RETRY);
        } else {
            // Otherwise, the user is not licensed to use this app.
            // Your response should always inform the user that the application
            // is not licensed, but your behavior at that point can vary. You might
            // provide the user a limited access version of your app or you can
            // take them to Google Play to purchase the app.
    //        showDialog(DIALOG_GOTOMARKET);
        }
    }
    private void displayResult(final String result) {
        mHandler.post(new Runnable() {
            public void run() {
                mStatusText.setText(result);
                setProgressBarIndeterminateVisibility(false);
                mCheckLicenseButton.setEnabled(true);
            }
        });
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        mChecker.onDestroy();
    }
}

Bewerkt (23 december 2014 22:52) | verduidelijking

Oukitel K5000 7.0 (nog) ongeroot
Samsung Note geroot 4.2.1 Spirit Rom (op sterven na dood)
HTC Desire geroot Slim Rom 4.4.4
HTC one X + geroot 4.2.2 ViperX+ 2.1.1
One plus one geroot 6.01
LG P990 geroot 2.3
Samsung A8 ongeroot (werk)
Umidigi a5 Pro ongeroot (nog wel).

tim687

tim687

  • Lid sinds 11 juli 2011
  • Berichten 418
  • Reputatie 0
  • #2
  • 7 februari 2015
  • 11:17

Als je in de Google API Docs kijkt, staat er dat SALT een randomly generates bytes zijn.

Nergens in jou code zie ik een SALT declaratie:

private String deviceId= Secure.getString(getContext().getContentResolver(),
                                                        Secure.ANDROID_ID); 
// Generate 20 random bytes, and put them here. Generate them here: https://www.random.org/cgi-bin/randbyte?nbytes=20&format=o
    private static final byte[] SALT = new byte[] { BYTE 1, BYTE 2, BYTE 3, etc, etc, etc
     };

De waarde van
private static final String BASE64_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkItn5E......"; 
moet je zelf halen uit de Google Developers Console!


  1. Go to the Google Play Developer Console and sign in. Make sure that you sign in to the account from which the application you are licensing is published (or will be published).



  • In the application details page, locate the Services & APIs link and click it.


  • In the Services & APIs page, locate the Licensing & In-App Billing section. Your public key for licensing is given in the Your License Key For This Application field.

Bewerkt (7 februari 2015 11:20)
Timelord

Timelord

  • Lid sinds 05 juni 2010
  • Berichten 2361
  • Reputatie 20
  • #3
  • 7 februari 2015
  • 14:33

Ik ben er achter gekomen dat je het niet persé nodig hebt om een app te kunnen verkopen.
Aangezien ik nog maar beginner ben laat ik dit voorlopig even rusten.
Ik sla het wel op voor later gebruik, dus dankjewel.

Oukitel K5000 7.0 (nog) ongeroot
Samsung Note geroot 4.2.1 Spirit Rom (op sterven na dood)
HTC Desire geroot Slim Rom 4.4.4
HTC one X + geroot 4.2.2 ViperX+ 2.1.1
One plus one geroot 6.01
LG P990 geroot 2.3
Samsung A8 ongeroot (werk)
Umidigi a5 Pro ongeroot (nog wel).

tim687

tim687

  • Lid sinds 11 juli 2011
  • Berichten 418
  • Reputatie 0
  • #4
  • 7 februari 2015
  • 15:51

Klopt, ik weet niet om wat voor een app het gaat, maar het is ten zeerste aan te raden om het wel te doen!

Timelord

Timelord

  • Lid sinds 05 juni 2010
  • Berichten 2361
  • Reputatie 20
  • #5
  • 7 februari 2015
  • 18:17

Hij staat er nu als gratis (https://play.google.com/store/apps/details?id=blue.peter.nl.lico) en als betaalde versie.
https://play.google.com/store/apps/details?id=nl.peter.blue.lico

als ik het goed begrijp, dan kun je 1 versie maken en dan door het aankopen van een licentie kun je de app registreren (betaald maken)
en evt opties vrijschakelen ?

Oukitel K5000 7.0 (nog) ongeroot
Samsung Note geroot 4.2.1 Spirit Rom (op sterven na dood)
HTC Desire geroot Slim Rom 4.4.4
HTC one X + geroot 4.2.2 ViperX+ 2.1.1
One plus one geroot 6.01
LG P990 geroot 2.3
Samsung A8 ongeroot (werk)
Umidigi a5 Pro ongeroot (nog wel).

Reageer

Om te reageren, dien je te zijn ingelogd. Druk op de onderstaande knop om in te loggen of maak een nieuwe account aan.

Inloggen Registreren