Autore Topic: Controllo licenza errore 3  (Letto 402 volte)

Offline Blodhgard

  • Utente junior
  • **
  • Post: 53
  • Respect: +3
    • Mostra profilo
    • Budget Veloce
  • Dispositivo Android:
    Nexus 5, S4 mini, Galaxy Tab S
  • Play Store ID:
    blodhgard
  • Sistema operativo:
    Windows 8.1
Controllo licenza errore 3
« il: 01 Ottobre 2014, 01:18:14 CEST »
0
Salve,
è tutta il giorno che provo, senza risultati, a fare un test sulla licenza nel mio dispositivo android   :-(

Codice (Java): [Seleziona]
public class LicenseActivity extends Activity
{
        private static final String BASE64_PUBLIC_KEY = "mykey";
        private static final byte[] SALT = new byte[] { my 20 int };
        private LicenseChecker mChecker;
        private LicenseCheckerCallback mLicenseCheckerCallback;
       
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
                super.onCreate(savedInstanceState);
               
                SharedPreferences sharedPref = getSharedPreferences(LoginActivity.SHAREDPREFERENCE_FILE, Context.MODE_PRIVATE);

                String deviceId = Secure.getString(getContentResolver(), Secure.ANDROID_ID);
               
                if (deviceId.equals(sharedPref.getString("device_id", null)))
                {
                        startMainActivity();
                }
               
                setContentView(R.layout.activity);
                Toast.makeText(this, getString(R.string.checking_application_license), Toast.LENGTH_SHORT).show();
       
                mLicenseCheckerCallback = new MyLicenseCheckerCallback();
                mChecker = new LicenseChecker(this, new ServerManagedPolicy(this, new AESObfuscator(SALT, getPackageName(), deviceId)), BASE64_PUBLIC_KEY);
                doCheck();
        }
       
        protected class MyLicenseCheckerCallback implements LicenseCheckerCallback
        {      
                @Override
                public void allow(int policy)
                {
                if (isFinishing())
                {
                        return;
                }
               
                String deviceId = Secure.getString(getContentResolver(), Secure.ANDROID_ID);

            SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit();
            editor.putString("device_id", deviceId).commit();
               
            // Should allow user access.
                startMainActivity();   
                }
       
                @Override
                public void applicationError(int errorCode)
                {
                        if (isFinishing())
                        {
                                return;
                        }
                    // This is a polite way of saying the developer made a mistake
                    // while setting up or calling the license checker library.
                    // Please examine the error code and fix the error.
                                //TODO:
                    Toast.makeText(LicenseActivity.this, getString(R.string.application_error) + " " +
                                           Integer.toString(errorCode).toString(), Toast.LENGTH_SHORT).show(); 
                }
       
                @SuppressWarnings("deprecation")
                @Override
                public void dontAllow(int policy)
                {
                    if (isFinishing())
                    {
                        return;
                    }
               
                    // Should not allow access. In most cases, the app should assume
                    // the user has access unless it encounters this. If it does,
                    // the app should inform the user of their unlicensed ways
                    // and then either shut down the app or limit the user to a
                    // restricted set of features.
                    // In this example, we show a dialog that takes the user to Market.
                    showDialog(0);
                }
        }
       
        // A handler on the UI thread. 
        private void doCheck()
        {
                mChecker.checkAccess(mLicenseCheckerCallback);
        }
       
        @Override
        protected Dialog onCreateDialog(int id)
        {
                return new AlertDialog.Builder(this)
                .setTitle(getString(R.string.unlicensed_dialog_title))
                .setCancelable(false)
                .setMessage(getString(R.string.unlicensed_dialog_body))
                .setPositiveButton(getString(R.string.buy_now), new DialogInterface.OnClickListener()
                {
                    @Override
                    public void onClick(DialogInterface dialog, int which)
                    {
                        Intent marketIntent = new Intent( Intent.ACTION_VIEW, Uri.parse("http://market.android.com/details?id=" + getPackageName()));
                        startActivity(marketIntent);
                        finish();
                        }
                })
                .setNegativeButton(getString(R.string.quit_button), new DialogInterface.OnClickListener()
                {
                        @Override
                        public void onClick(DialogInterface dialog, int which)
                        {
                                finish();
                         }
                 }).create();
        }
       
        @Override
        protected void onDestroy()
        {
                super.onDestroy();
                mChecker.onDestroy();
        }
       
        private void startMainActivity()
        {
                startActivity(new Intent(this, LoginActivity.class));
                finish();
        }
}

Ho utilizzato il classico tutorial.
Ho inserito nel manifest il permesso necessario.

Nella console degli sviluppatori ho fatto l'upload dell'apk in versione beta e ho impostato in dettagli account la risposta in LICENSED.
Ho provato sia con il mio dispositivo che con quello di mio padre(dopo aver inserito la sua email nel campo "Account Gmail con accesso per il test" e avergli anche creato un account utente nella mia console),
ma la risposta è sempre o che ho una versione pirata(dontallow) o che ho un errore e precisamente il 3(ERROR_NOT_MARKET_MANAGED).
Dove sbaglio? penso di sbagliare qualcosa nel settare la console degli sviluppatori perchè il codice mi sembra corretto.
Spero in un vostro aiuto, grazie :-)

P.S. aggiungo che se stacco la connessione mi entra sempre in dontallow(teoricamente non dovrebbe essere un altro errore? service_not_found?)
« Ultima modifica: 01 Ottobre 2014, 14:14:46 CEST da Blodhgard »

Offline Blodhgard

  • Utente junior
  • **
  • Post: 53
  • Respect: +3
    • Mostra profilo
    • Budget Veloce
  • Dispositivo Android:
    Nexus 5, S4 mini, Galaxy Tab S
  • Play Store ID:
    blodhgard
  • Sistema operativo:
    Windows 8.1
Re:Controllo licenza errore 3
« Risposta #1 il: 22 Ottobre 2014, 00:46:50 CEST »
0
Ho risolto.
Alla fine il codice andava bene e anche le impostazioni della console.
Solo che finchè non ho pubblicato la prima versione dell'app non funzionava.