Den public License Key ver- und entschlüsseln

  • 3 Antworten
  • Neuester Beitrag
Diskutiere Den public License Key ver- und entschlüsseln im Android App Entwicklung im Bereich Betriebssysteme & Apps.
Jaiel

Jaiel

Experte
Guten Tag,

folgendes:

Für In-App Billing braucht meine App den public license key. Ich würde den gerne verschlüsseln da mir Google das empfiehlt. Und ich kenne mich damit überhaupt nciht aus. Das Einzige was mir Google Docs gibt ist ein Kommentar im BeispielCode:
"// compute your public key and store it in base64EncodedPublicKey"

ja ne klar aber wie, wo aufbewahren bzw von wo holen?

Ich hoffe ihr könnt mir helfen danke!!!
 
Jaiel

Jaiel

Experte
Hallo nochmal extra Frage:

PHP:
public void makePurchase()
    {
        runOnUiThread(new Runnable()
        {

            @Override
            public void run() {
                iabHelper.launchPurchaseFlow((Activity)getApplicationContext(), SKU_PREMIUM, 1, 
                          iabPurchaseFinishedListener, "blahblahkeks");
            }
        });
    }

Ist das Ok so mit der Purchase anfrage? Diese Methode ist Teil der Activity wird aber aus eiem anderen Thread heraus aufgerufen. Geht das ok der Cast zu Activity da eine Activity nochmal eine spezialisiertere Klasse von Context ist und einige Signaturen weniger hat deswegen oder liege ich da flasch?

Hatte mir bisher noch nicht die Mühe gemacht mal den Android QuellCode zu studieren....
 
Jaiel

Jaiel

Experte
Ok war doch nciht richtig zum Glück hat mcih der Logcat darauf hingewiesen dass ich da den falschen Context angesprochen habe.

Jetzt ist folgendes Problem entstanden:
-Ich habe mir ein TestAccount angelegt umd as Produkt testweise zu erwerben.
-Jetzt drücke ich auf meinen Button und da kommt der Fehler dass ich mich zuerst mit meinem Google Konto anmelden soll. Ok ist jetzt nciht sos chlimm mache ich das.
Jedoch ist mir aufgefallen dass dort eine Exception geschmissen wird wenn ich nochmals auf den Button klicke. Anstatt das Fenster mit dem Fehler erneut anzuzeigen, sagt mir der Logcat dass der Asynctask immer noch am laufen ist und ich keinen neuen starten kann. Das sit nciht gewünscht und ich fange das einfach ab mit einem Toast aber solange jetzt die Activity läuft an die der Purchase service gebunden ist geht kein erneutes "Kaufen"

Und ganz unnötig: Wenn ich ausserhalb des weißen Kästchen mit dem "Kaufen" Dialog klicke kehre ich in meine Activity zurück und der Fehler (s.o.) ensteht ebenfalls


Warruuuumm? Wie sollte ich das nun richtgi implementieren?


Edit:Ok ich glaube ich hab da was gelesen von 2-3 Stunden bis das Item aktiviert ist oder so also abwarten und teetrinken :( Obwohl in den Docs von einem ganz anderen Fehler die Rede ist"User nciht berechtigt für diesen Kauf" oder so in der Art

(Sorry das dieser Thread 2 Fragen enthält aber ich wollte kein unnötigen 2 Thread aufmachen, falls gewünscht kann ich das gerne nachholen)
 
Zuletzt bearbeitet:
Jaiel

Jaiel

Experte
Ich werde Wahnsinnig. Der Kehrt nciht aus dem Asynctask zurück!!! Der Listener falls was gekauft wurde wird nciht angeschmissen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Hier mein Code:

PHP:
public class MainActivity extends Activity {
   ...
    IabHelper iabHelper;
    String SKU_PREMIUM="android.test.purchased";
    IabHelper.OnIabPurchaseFinishedListener iabPurchaseFinishedListener;
    IabHelper.QueryInventoryFinishedListener iabGotInventoryListener;
   ...
  
  
  
      
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
      

        if(savedInstanceState==null)
        {
            String justAString=getString(R.string.just_a_string);
            ...
            iabHelper = new IabHelper(this, justAString);
            iabHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
                  public void onIabSetupFinished(IabResult result) {
                     if (!result.isSuccess()) {
                        iabHelper=null;
                     }
                     requestPurchase();
                  }
                });
          
//Der Listener der niemal angesprochen wird obwohl das Item gekauft wurde!!!Aber anspringen tut er falls das Item schon gekauft ist!!!
//Warum tut er mir das an?
            iabPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
              public void onIabPurchaseFinished(IabResult result, Purchase purchase)
              {
                  Log.e("hi",""+purchase.getSku().equals(SKU_PREMIUM));
                 if (result.isFailure()) {
                   Toast.makeText(getApplicationContext(), "Something went wrong!Try again"+specialThing, Toast.LENGTH_SHORT).show();
                   Log.e("hi","not ad free"+purchase.getSku().equals(SKU_PREMIUM));
                    return;
                 }
                 else if (purchase.getSku().equals(SKU_PREMIUM)) {
                   Toast.makeText(getApplicationContext(), "You are now Ad-free", Toast.LENGTH_LONG).show();
                   requestPurchase();
                   Log.e("hi","ad free");
            
                 }
              }
            };
          
            iabGotInventoryListener = new IabHelper.QueryInventoryFinishedListener()
            {
              public void onQueryInventoryFinished(IabResult result,
                 Inventory inventory)
              {

                 if (result.isFailure())
                 {
                   specialThing=false;
                   Log.e("hi","fehler"+result);
                 }
                 else
                 {
                   if(mView!=null&&mView.mThread!=null&&inventory.hasPurchase(SKU_PREMIUM))
                   {
                      mView.mThread.changeNoAdButton();
                      specialThing=true;
                      Log.e("hi","ak");
                   }
                 }
                
          
                  }
            };

        }
    }
  
  
    /**
    * start a purchase for premium
    */
    public void makePurchase()
    {
        runOnUiThread(new Runnable()
        {

            @Override
            public void run() {
                if(iabHelper!=null)
                    try
                    {
                        iabHelper.launchPurchaseFlow(MainActivity.this, SKU_PREMIUM, 1, 
                              iabPurchaseFinishedListener, "");
                    }
                    catch(Throwable t)
                    {
                        Toast.makeText(MainActivity.this, "ohoh!", Toast.LENGTH_SHORT).show();
                    }
            }
          
        });
    }
  
  
    public void requestPurchase()
    {
      
        runOnUiThread(new Runnable()
        {

            @Override
            public void run() {
                if(iabHelper!=null)
                    iabHelper.queryInventoryAsync(iabGotInventoryListener);
              
            }
          
        });
    }

Ich bitte dringend um Hilfe!!!