Naar content
Trending apps
  • Google Duo: videogesprekken van hoge kwaliteit

  • Gmail

  • Maps: Navigatie en OV

  • WhatsApp Messenger

  • Messenger: gratis sms'en en videobellen

Trending games
  • Fortnite

  • Minecraft Earth

  • Dr. Mario World

  • Harry Potter: Wizards Unite

  • Breaking Bad: Criminal Elements

Trending smartphones
  • OnePlus Nord N10 5G

  • POCO X3

  • Google Pixel 5

  • Google Pixel 4a

  • OnePlus Nord

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

Wij werken momenteel aan een nieuw forum voor Androidworld. Het is daarom momenteel niet mogelijk om te reageren of nieuwe topics aan te maken.

Timelord

  • Lid sinds 05 juni 2010
  • Berichten 2421
  • 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 (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 3 Power ongeroot.
Samsung A7 ongeroot.

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

  • Lid sinds 05 juni 2010
  • Berichten 2421
  • 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 (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 3 Power ongeroot.
Samsung A7 ongeroot.

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

  • Lid sinds 05 juni 2010
  • Berichten 2421
  • 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 (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 3 Power ongeroot.
Samsung A7 ongeroot.

Reageer

We werken momenteel hard aan een nieuw forum voor Androidworld. Het is daarom helaas niet mogelijk om op dit topic te reageren.