# In App Purchase Problem?



## wer112 (15. Jul 2021)

Sorry, das ich mit diesem Thema anfange. Nach mein letzten Beitrag, wo ich gefragt habe, wie man das mit dem In App Käufe hinbekommt, habe ich jetzt hinbekommen mit der Test App. Ich kann das Kaufen und verbrauchen und anschließend werden die Coins gutgeschrieben. Ich kann somit ein Produkt unendlich hintereinander kaufen.
Ich war stolz darauf, wo ich den Code in einer meine anderen App hinzugefügt hatte. Ich hatte es ganz genau so gemacht, wie mit der Test App. Ich habe meine andere App fertig gestellt mit dem jetzigen Kauf Version. Habe es in der Console im Offenen Test hochgeladen, zum Glück wurde die App abgelehnt, weil die Nutzer hätten ihre gekauften Coins nicht erhalten können. Das wäre Betrug sonst. Ich möchte, dass es richtig funktioniert, ohne das ich Leute abziehe, weil der Code nicht glappt. Darum bin ich froh das die App gelehnt wurden ist, jetzt kann ich das Problem(mit eure Hilfe) lösen.

Problem 1: Ich kann alle Produkte nur einmal kaufen und wenn ich Glück habe, ein zweites mal.
Problem 2: Die Coins werden nicht gutgeschrieben, auch noch nicht mal ein Toast angezeigt werden. (Das Speichern wäre nach dem es gutgeschrieben ist....)

Das ist der Code von der App, die perfekt funktioniert!(Nach letztes Thema)

[CODE lang="java" title="In App Purchase Test"]package ...............;


import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.anjlab.android.iab.v3.BillingProcessor;
import com.anjlab.android.iab.v3.TransactionDetails;

public class MainActivity extends AppCompatActivity implements BillingProcessor.IBillingHandler {

    private BillingProcessor bp;

    private TextView coinText;

    private Button btn1, btn2, btn3;

    private int coins = 0;

    private String produktId = "";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        SharedPreferences prefsnetzeinstellung = getSharedPreferences("Coins", MODE_PRIVATE);
        coins = prefsnetzeinstellung.getInt("coins", coins);

        coinText = findViewById(R.id.textView);
        coinText.setText(coins + " Coins");


        btn1 = findViewById(R.id.button);
        btn2 = findViewById(R.id.button2);
        btn3 = findViewById(R.id.button3);



        bp = new BillingProcessor(this, getResources().getString(R.string.play_console_license), this);
        bp.initialize();


    }


    @Override
    public void onBillingInitialized() {

        btn1.setOnClickListener(v ->{
            if(bp.isOneTimePurchaseSupported()){
                bp.purchase(this, "button1");
                bp.consumePurchase("button1");
                produktId = "button1";

            }else{

            }
        });

        btn2.setOnClickListener(v ->{
            if(bp.isOneTimePurchaseSupported()){
                bp.purchase(this, "button2");
                bp.consumePurchase("button2");
                produktId = "button2";

            }else{

            }
        });

        btn3.setOnClickListener(v ->{
            if(bp.isOneTimePurchaseSupported()){
                bp.purchase(this, "button3");
                bp.consumePurchase("button3");
                produktId = "button3";

            }else{

            }
        });

    }

    @Override
    public void onProductPurchased(String productId, TransactionDetails details) {

        if (produktId == "button1"){
            coins += 2;
            SharedPreferences prefs = getSharedPreferences("Coins", MODE_PRIVATE);
            SharedPreferences.Editor editor = prefs.edit();
            editor.putInt("coins" , coins);
            editor.apply();
            coinText.setText(coins + " Coins");

        }


        if (produktId == "button2"){
            coins += 5;
            SharedPreferences prefs = getSharedPreferences("Coins", MODE_PRIVATE);
            SharedPreferences.Editor editor = prefs.edit();
            editor.putInt("coins" , coins);
            editor.apply();
            coinText.setText(coins + " Coins");

        }

        if (produktId == "button3"){
            coins += 8;
            SharedPreferences prefs = getSharedPreferences("Coins", MODE_PRIVATE);
            SharedPreferences.Editor editor = prefs.edit();
            editor.putInt("coins" , coins);
            editor.apply();
            coinText.setText(coins + " Coins");

        }




    }



    @Override
    public void onPurchaseHistoryRestored() {

    }

    @Override
    public void onBillingError(int errorCode, Throwable error) {

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        if (!bp.handleActivityResult(requestCode,resultCode, data)){
            super.onActivityResult(requestCode, resultCode, data);
        }
    }

    @Override
    public void onDestroy() {
        if (bp != null){
            bp.release();
        }
        super.onDestroy();
    }
}

[/CODE]

Und das Video, was die App im realen Zeigt!

Video 1: https://drive.google.com/file/d/1jxhUm9UHULJ7YO4GJ0e7cYyKld3A520Z/view?usp=sharing


Und das ist der Code von der App die ich eigentlich online stellen wollte, mit dem Code (siehe Video 1)(Der Ursprungscode!):


[CODE lang="java" title="Der Ursprungscode"]package ..........;

import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;


import com.anjlab.android.iab.v3.BillingProcessor;
import com.anjlab.android.iab.v3.TransactionDetails;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.EventListener;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.FirebaseFirestoreException;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class fragment_shop  extends Fragment implements BillingProcessor.IBillingHandler  {

    TextView coinText;

    private Button btn1, btn2, btn3, btn4, btn5, btn6;




    private BillingProcessor bp;



    FirebaseAuth fAuth;
    FirebaseFirestore fStore;

    String userID;


    private int coins = 0;


    private String produktId = "";






    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    /* --------------------------------- Hier kommt alles rein, was normalerweise in die onCreat Methode kommt -------------------------------- */
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {

        View fragmentlayout_shop = inflater.inflate(R.layout.shop_layout, null);
        coinText = (TextView)fragmentlayout_shop.findViewById(R.id.textView7);

        LadenCoins();

        fAuth = FirebaseAuth.getInstance();
        fStore = FirebaseFirestore.getInstance();
        userID = fAuth.getCurrentUser().getUid();


        btn1 = (Button)fragmentlayout_shop.findViewById(R.id.button2);
        btn2 = (Button)fragmentlayout_shop.findViewById(R.id.button3);
        btn3 = (Button)fragmentlayout_shop.findViewById(R.id.button4);
        btn4 = (Button)fragmentlayout_shop.findViewById(R.id.button6);
        btn5 = (Button)fragmentlayout_shop.findViewById(R.id.button7);
        btn6 = (Button)fragmentlayout_shop.findViewById(R.id.button8);




        bp = new BillingProcessor(getActivity(), getResources().getString(R.string.play_console_license), fragment_shop.this);
        bp.initialize();



        return fragmentlayout_shop;
    }





    public void onBackPressed() {
        Log.e("######","Du kommst hier net raus");
    }

    private void LadenCoins() {


        fAuth = FirebaseAuth.getInstance();
        fStore = FirebaseFirestore.getInstance();
        userID = fAuth.getCurrentUser().getUid();

        DocumentReference documentReference = fStore.collection("Guthaben").document(userID);

        documentReference.addSnapshotListener(getActivity(), new EventListener<DocumentSnapshot>() {
            @Override
            public void onEvent(@Nullable DocumentSnapshot value, @Nullable FirebaseFirestoreException error) {
                coins = value.getLong("Coins").intValue();
                coinText.setText("" + coins);


            }
        });



    }


    @Override
    public void onBillingInitialized() {

        btn1.setOnClickListener(v ->{
            if(bp.isOneTimePurchaseSupported()){
                bp.purchase(getActivity(), "product_zehn_coins");
                bp.consumePurchase("product_zehn_coins");
                produktId = "product_zehn_coins";

            }else{

            }
        });

        btn2.setOnClickListener(v ->{
            if(bp.isOneTimePurchaseSupported()){
                bp.purchase(getActivity(), "product_fuenfundzwanzig_coins");
                bp.consumePurchase("product_fuenfundzwanzig_coins");
                produktId = "product_fuenfundzwanzig_coins";

            }else{

            }
        });

        btn3.setOnClickListener(v ->{
            if(bp.isOneTimePurchaseSupported()){
                bp.purchase(getActivity(), "product_fuenfzig_coins");
                bp.consumePurchase("product_fuenfzig_coins");
                produktId = "product_fuenfzig_coins";

            }else{

            }
        });

        btn4.setOnClickListener(v ->{
            if(bp.isOneTimePurchaseSupported()){
                bp.purchase(getActivity(), "product_einhundert_coins");
                bp.consumePurchase("product_einhundert_coins");
                produktId = "product_einhundert_coins";

            }else{

            }
        });

        btn5.setOnClickListener(v ->{
            if(bp.isOneTimePurchaseSupported()){
                bp.purchase(getActivity(), "product_eintausend_coins");
                bp.consumePurchase("product_eintausend_coins");
                produktId = "product_eintausend_coins";

            }else{

            }
        });

        btn6.setOnClickListener(v ->{
            if(bp.isOneTimePurchaseSupported()){
                bp.purchase(getActivity(), "product_fuenftausend_coins");
                bp.consumePurchase("product_fuenftausend_coins");
                produktId = "product_fuenftausend_coins";

            }else{

            }
        });

    }


    @Override
    public void onProductPurchased(String productId, TransactionDetails details) {

        if (produktId == "product_zehn_coins"){
            coins += 10;

            DocumentReference documentReference = fStore.collection("Guthaben").document(userID);
            Map<String, Object> user_guthaben = new HashMap<>();
            user_guthaben.put("Coins", coins);
            documentReference.set(user_guthaben);

            coinText.setText(coins + " Coins");

        }

        if (produktId == "product_fuenfundzwanzig_coins"){
            coins += 25;

            fAuth = FirebaseAuth.getInstance();
            fStore = FirebaseFirestore.getInstance();
            userID = fAuth.getCurrentUser().getUid();

            DocumentReference documentReference = fStore.collection("Guthaben").document(userID);
            Map<String, Object> user_guthaben = new HashMap<>();
            user_guthaben.put("Coins", coins);
            documentReference.set(user_guthaben);

            coinText.setText(coins + " Coins");

        }

        if (produktId == "product_fuenfzig_coins"){
            coins += 50;

            fAuth = FirebaseAuth.getInstance();
            fStore = FirebaseFirestore.getInstance();
            userID = fAuth.getCurrentUser().getUid();

            DocumentReference documentReference = fStore.collection("Guthaben").document(userID);
            Map<String, Object> user_guthaben = new HashMap<>();
            user_guthaben.put("Coins", coins);
            documentReference.set(user_guthaben);

            coinText.setText(coins + " Coins");

        }

        if (produktId == "product_einhundert_coins"){
            coins += 100;

            fAuth = FirebaseAuth.getInstance();
            fStore = FirebaseFirestore.getInstance();
            userID = fAuth.getCurrentUser().getUid();

            DocumentReference documentReference = fStore.collection("Guthaben").document(userID);
            Map<String, Object> user_guthaben = new HashMap<>();
            user_guthaben.put("Coins", coins);
            documentReference.set(user_guthaben);

            coinText.setText(coins + " Coins");

        }

        if (produktId == "product_eintausend_coins"){
            coins += 1000;

            fAuth = FirebaseAuth.getInstance();
            fStore = FirebaseFirestore.getInstance();
            userID = fAuth.getCurrentUser().getUid();

            DocumentReference documentReference = fStore.collection("Guthaben").document(userID);
            Map<String, Object> user_guthaben = new HashMap<>();
            user_guthaben.put("Coins", coins);
            documentReference.set(user_guthaben);

            coinText.setText(coins + " Coins");

        }

        if (produktId == "product_fuenftausend_coins"){
            coins += 5000;

            fAuth = FirebaseAuth.getInstance();
            fStore = FirebaseFirestore.getInstance();
            userID = fAuth.getCurrentUser().getUid();

            DocumentReference documentReference = fStore.collection("Guthaben").document(userID);
            Map<String, Object> user_guthaben = new HashMap<>();
            user_guthaben.put("Coins", coins);
            documentReference.set(user_guthaben);

            coinText.setText(coins + " Coins");

        }



    }

    @Override
    public void onPurchaseHistoryRestored() {

    }

    @Override
    public void onBillingError(int errorCode, Throwable error) {

    }


}








[/CODE]


So funktioniert am Ende Beide Codes(Macht kein Unterschied!):



			https://drive.google.com/file/d/1k1FJ8g5BXo5DNDG_jZqug_I53TslZtBQ/view?usp=sharing
		



Das ist der Code als das ursprünglicher Code nicht funktioniert hat:



[CODE lang="java" title="Nach dem ursprünglicher Code nicht funktioniert hat."]package de.klugaug.tiktokfollowerlikes;

import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;


import com.anjlab.android.iab.v3.BillingProcessor;
import com.anjlab.android.iab.v3.TransactionDetails;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.EventListener;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.FirebaseFirestoreException;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class fragment_shop  extends Fragment implements BillingProcessor.IBillingHandler  {

    TextView coinText;

    private Button btn1, btn2, btn3, btn4, btn5, btn6;




    private BillingProcessor bp;



    FirebaseAuth fAuth;
    FirebaseFirestore fStore;

    String userID;


    private int coins = 0;


    private String produktID = "";






    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    /* --------------------------------- Hier kommt alles rein, was normalerweise in die onCreat Methode kommt -------------------------------- */
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {

        View fragmentlayout_shop = inflater.inflate(R.layout.shop_layout, null);
        coinText = (TextView)fragmentlayout_shop.findViewById(R.id.textView7);

        LadenCoins();

        fAuth = FirebaseAuth.getInstance();
        fStore = FirebaseFirestore.getInstance();
        userID = fAuth.getCurrentUser().getUid();


        btn1 = (Button)fragmentlayout_shop.findViewById(R.id.button2);
        btn2 = (Button)fragmentlayout_shop.findViewById(R.id.button3);
        btn3 = (Button)fragmentlayout_shop.findViewById(R.id.button4);
        btn4 = (Button)fragmentlayout_shop.findViewById(R.id.button6);
        btn5 = (Button)fragmentlayout_shop.findViewById(R.id.button7);
        btn6 = (Button)fragmentlayout_shop.findViewById(R.id.button8);




        bp = new BillingProcessor(getActivity(), getResources().getString(R.string.play_console_license), fragment_shop.this);
        bp.initialize();



        return fragmentlayout_shop;
    }





    public void onBackPressed() {
        Log.e("######","Du kommst hier net raus");
    }

    private void LadenCoins() {


        fAuth = FirebaseAuth.getInstance();
        fStore = FirebaseFirestore.getInstance();
        userID = fAuth.getCurrentUser().getUid();

        DocumentReference documentReference = fStore.collection("Guthaben").document(userID);

        documentReference.addSnapshotListener(getActivity(), new EventListener<DocumentSnapshot>() {
            @Override
            public void onEvent(@Nullable DocumentSnapshot value, @Nullable FirebaseFirestoreException error) {
                coins = value.getLong("Coins").intValue();
                coinText.setText("" + coins);


            }
        });



    }


    @Override
    public void onBillingInitialized() {

        btn1.setOnClickListener(v ->{
            if(bp.isOneTimePurchaseSupported()){
                bp.purchase(getActivity(), "product_zehn_coins");
                bp.consumePurchase("product_zehn_coins");
                produktID = "product_zehn_coins";

            }else{

            }
        });

        btn2.setOnClickListener(v ->{
            if(bp.isOneTimePurchaseSupported()){
                bp.purchase(getActivity(), "product_fuenfundzwanzig_coins");
                bp.consumePurchase("product_fuenfundzwanzig_coins");
                produktID = "product_fuenfundzwanzig_coins";

            }else{

            }
        });

        btn3.setOnClickListener(v ->{
            if(bp.isOneTimePurchaseSupported()){
                bp.purchase(getActivity(), "product_fuenfzig_coins");
                bp.consumePurchase("product_fuenfzig_coins");
                produktID = "product_fuenfzig_coins";

            }else{

            }
        });

        btn4.setOnClickListener(v ->{
            if(bp.isOneTimePurchaseSupported()){
                bp.purchase(getActivity(), "product_einhundert_coins");
                bp.consumePurchase("product_einhundert_coins");
                produktID = "product_einhundert_coins";

            }else{

            }
        });

        btn5.setOnClickListener(v ->{
            if(bp.isOneTimePurchaseSupported()){
                bp.purchase(getActivity(), "product_eintausend_coins");
                bp.consumePurchase("product_eintausend_coins");
                produktID = "product_eintausend_coins";

            }else{

            }
        });

        btn6.setOnClickListener(v ->{
            if(bp.isOneTimePurchaseSupported()){
                bp.purchase(getActivity(), "product_fuenftausend_coins");
                bp.consumePurchase("product_fuenftausend_coins");
                produktID = "product_fuenftausend_coins";

            }else{

            }
        });

    }


    @Override
    public void onProductPurchased(String productId, TransactionDetails details) {

        if (productId.equals(produktID)){
            coins += 10;

            Toast.makeText(getActivity(), "10 Coins" + getString(R.string.erfolgreich_gekauft), Toast.LENGTH_SHORT).show();

            coinText.setText(coins + " Coins");

        }

        if (productId == "product_fuenfundzwanzig_coins"){
            coins += 25;

            fAuth = FirebaseAuth.getInstance();
            fStore = FirebaseFirestore.getInstance();
            userID = fAuth.getCurrentUser().getUid();

            DocumentReference documentReference = fStore.collection("Guthaben").document(userID);
            Map<String, Object> user_guthaben = new HashMap<>();
            user_guthaben.put("Coins", coins);
            documentReference.set(user_guthaben);

            coinText.setText(coins + " Coins");

        }

        if (produktID == "product_fuenfzig_coins"){
            coins += 50;

            fAuth = FirebaseAuth.getInstance();
            fStore = FirebaseFirestore.getInstance();
            userID = fAuth.getCurrentUser().getUid();

            DocumentReference documentReference = fStore.collection("Guthaben").document(userID);
            Map<String, Object> user_guthaben = new HashMap<>();
            user_guthaben.put("Coins", coins);
            documentReference.set(user_guthaben);

            coinText.setText(coins + " Coins");

        }

        if (produktID == "product_einhundert_coins"){
            coins += 100;

            fAuth = FirebaseAuth.getInstance();
            fStore = FirebaseFirestore.getInstance();
            userID = fAuth.getCurrentUser().getUid();

            DocumentReference documentReference = fStore.collection("Guthaben").document(userID);
            Map<String, Object> user_guthaben = new HashMap<>();
            user_guthaben.put("Coins", coins);
            documentReference.set(user_guthaben);

            coinText.setText(coins + " Coins");

        }

        if (produktID == "product_eintausend_coins"){
            coins += 1000;

            fAuth = FirebaseAuth.getInstance();
            fStore = FirebaseFirestore.getInstance();
            userID = fAuth.getCurrentUser().getUid();

            DocumentReference documentReference = fStore.collection("Guthaben").document(userID);
            Map<String, Object> user_guthaben = new HashMap<>();
            user_guthaben.put("Coins", coins);
            documentReference.set(user_guthaben);

            coinText.setText(coins + " Coins");

        }

        if (produktID == "product_fuenftausend_coins"){
            coins += 5000;

            fAuth = FirebaseAuth.getInstance();
            fStore = FirebaseFirestore.getInstance();
            userID = fAuth.getCurrentUser().getUid();

            DocumentReference documentReference = fStore.collection("Guthaben").document(userID);
            Map<String, Object> user_guthaben = new HashMap<>();
            user_guthaben.put("Coins", coins);
            documentReference.set(user_guthaben);

            coinText.setText(coins + " Coins");

        }



    }

    @Override
    public void onPurchaseHistoryRestored() {

    }

    @Override
    public void onBillingError(int errorCode, Throwable error) {

    }


}








[/CODE]


*Warum funktioniert der Code in der Demo App perfekt(siehe Video)?
Und warum funktioniert der gleiche Code überhaubt nicht in der anderen App, obwohl alles gleich ist?

Ich will es so machen, wie in meine Demo App, warum läufte er aber nicht in die anderen Apps?



Ich benötige dafür dringend eure Hilfe, bevor diese App wieder veröffentliche.

Ich bin für jede Antwort sehr dankbar.*


----------



## kneitzel (15. Jul 2021)

Was genau passiert denn? Was funktioniert und was funktioniert nicht?

Ach, das kannst Du nicht sagen, weil Du nichts sinnvolles ins Log schreibst ("Du kommst hier nicht raus" war aber schon gut ...) und daher vermutlich gar nicht mitbekommst, was für Code er ausführt oder nicht ... und onBillingError ist komplett leer.

Das wäre auch nur das, was mir bezüglich Fehlersuche einfallen würde. Weitere Hinweise zu dem Code erspare ich mir lieber ...


----------



## Jw456 (15. Jul 2021)

Hallo für mich sieht es so aus als ob der Fehler von Google kommt also als ob deine Lizenz deine test karte nicht anerkannt wird.

Interessant wäre auch welcher Fehler kommt.  Entweder in der error Methode oder auch in der logcat.

Die error Tafel in dem video kommt von Google. 


Zu 2 Es wird nicht gutgeschrieben weil du mit Sicherheit nicht in die Methode kommst. Da würde ein log helfen um  zu sehen ob die Methode aufgerufen wird. 
Ich denke sie wird nicht aufgrufen denn du bekommst ja den Fehler von Google angezeigt.


----------



## wer112 (15. Jul 2021)

Jw456 hat gesagt.:


> Hallo für mich sieht es so aus als ob der Fehler von Google kommt also als ob deine Lizenz deine test karte nicht anerkannt wird.
> 
> Interessant wäre auch welcher Fehler kommt.  Entweder in der error Methode oder auch in der logcat.
> 
> ...


Aber warum funktioniert es perfekt bei der Demo App? Ich habe bei dieser es ganz genau so gemacht. 
In den Logs kommt kein Error.
Was meinst du mit error Tafel?
Meine Test karte funktioniert ja, sonst kann ich ja nixs kaufen. Und ich bekomme auch die entsprechende Quittung.

Logcat schicke ich später...


----------



## Jw456 (15. Jul 2021)

Error Tafel die Fehler Meldung von Google das du es schon gekauft hast oder so ähnlich sehe ich auf meinen Handy nicht so richtig zu kurz.


----------



## wer112 (15. Jul 2021)

kneitzel hat gesagt.:


> Was genau passiert denn? Was funktioniert und was funktioniert nicht?
> 
> Ach, das kannst Du nicht sagen, weil Du nichts sinnvolles ins Log schreibst ("Du kommst hier nicht raus" war aber schon gut ...) und daher vermutlich gar nicht mitbekommst, was für Code er ausführt oder nicht ... und onBillingError ist komplett leer.
> 
> Das wäre auch nur das, was mir bezüglich Fehlersuche einfallen würde. Weitere Hinweise zu dem Code erspare ich mir lieber ...


1. Sieht man in den Videos. Die Demo App funktioniert perfekt und die andere App kommt irgendwie nicht in die onProductPurchased Methode(Obwohl ich alles genauso wie die Demo App getan habe und die Demo App funktioniert ja perfekt(siehe Video)).

2. Das mit dem Log "Du kommst hier nicht raus" war aus einem Youtube Video und das verhindert das man nicht zurück kann.(Hat sehr viele Vorteile) und es hat mir immer einen sehr guten Dienst erwiesen.

3. Ich schaue immer in die Logcats um die Fehler zu beseitigen ect. Manchmal zeigt er sinnlosen Zeug an, was bis da hin perfekt funktioniert(Laden der Coins) und irgendwann zeigt er dort 2. bestimmte Fehler an, die gar keine Fehler sind. Aber wenn da ein Problem ist, dann versuche ich das zu lösen.

= In diesem Fall wurde in den Logcats keine Fehler angezeigt. 

4. onBillingError war bei der Demo App auch leer und es hat garnicht geschadet. In dem Youtube video hat er nixs reingeschrieben. Und es wird ja gekauft und alles nur das nicht, dass es in die onProductPurchase Methode kommt.

5. Es würde viele unschuldige Menschen retten...


----------



## wer112 (15. Jul 2021)

Jw456 hat gesagt.:


> Error Tafel die Fehler Meldung von Google das du es schon gekauft hast oder so ähnlich sehe ich auf meinen Handy nicht so richtig zu kurz.


ja da wurde es ja nicht richtig konsumiert. Darum verstehe ich ja nicht, warum das Bei der Demo App so perfekt laubt und ich ein Product unendlich kaufen kann und dort nicht, obwohl es gleich aufgebaut ist. In diese App läuft es sehr schief. 1. das konsumieren läuft gegensatz zur Demo App überhaubt nicht ab, außer ganz selten mit Glück. 2. Die onPruductPurchase Methode kommt er nicht rein....


----------



## Jw456 (15. Jul 2021)

4.  es würde helfen ob du indie methode kommst und wenn ja welcher fehler da enthalten ist.

onBillingError ist meiner meinung nach dazuda um fehler die beim kauf entstehen mitzubekommen und entsprechend darauf reagieren zu können.


----------



## Jw456 (15. Jul 2021)

Wie ich schon sagte wird es an der Verbindung deiner App mit der Google Konsole ligen.


----------



## kneitzel (15. Jul 2021)

Sorry, aber so kommen wir nicht weiter.

onBillingError wird aufgerufen, wenn es bei der Abrechnung Probleme gab. Das interessiert Dich nicht?

Und Du könntest Dinge im Log nachvollziehen, wenn Du da vernünftig Informationen rein schreiben würdest. Dann wüsstest Du, ob und wann was mit welchen Parametern aufgerufen wird. Dann könnte man etwas nachvollziehen ...

Das hier ist auf diesem Niveau:
Mein Auto fährt nicht!
Das Auto meiner Frau fährt aber!
Und egal was ihr bezüglich Fehlersuche an Tipps gebt: Das ist alles Quatsch, denn in dem YouTube Video bezüglich Auto fahren wurden diverse Dinge auch nicht gemacht! Also lehne ich das natürlich ab. (Und das Auto meiner Frau fährt ja auch ohne dass ich die Motorhaube öffne oder so!)


----------



## Jw456 (15. Jul 2021)

@kneitzel er benutzt gar keine logs das was er benutzt ist der listener des BackButton des Handys. Hier absolut unbedeutend.


----------



## kneitzel (15. Jul 2021)

Jw456 hat gesagt.:


> @kneitzel er benutzt gar keine logs das was er benutzt ist der listener des BackButton des Handys. Hier absolut unbedeutend.


Was willst du mir genau sagen? Kannst du dich etwas verständlicher ausdrücken?

Natürlich nutzt er Logs ... nur eben in einer sinnlosen Art und Weise. Der Handler für das Back ist sowas von egal - das ist nur eben bezeichnend für den extrem schlechten Code.

Ins Log schauen macht mehr Sinn, wenn da auch sinnvolle Informationen stehen. Also sollte er, um nachvollziehen zu können, was sein Code macht, da mehr rein schreiben.
Und ein error Handler leer zu lassen ist ebenso bezeichnen wie ein leerer Catch Block.

Das sind die Kernpunkte meiner Aussage.  Und der TE reagiert auf Hinweise ablehnend, daher ist die Frage, was du hier gerade mit mir diskutieren willst, denn für mich war es an der Stelle eigentlich abgehakt.


----------



## Jw456 (16. Jul 2021)

kneitzel hat gesagt.:


> Was willst du mir genau sagen? Kannst du dich etwas verständlicher ausdrücken?
> 
> Natürlich nutzt er Logs ... nur eben in einer sinnlosen Art und Weise. Der Handler für das Back ist sowas von egal - das ist nur eben bezeichnend für den extrem schlechten Code.
> 
> ...


Dann schaue dir seinen Code an ich sehe da nur das eine log was du genannt hast.

Es war eigentlich eine Zustimmung die du nicht verstanden hast.
Wenn du meinen vorherigen Kommentar liest sollte es klar sein ich wollte auch wissen was Inden error Handler ist.
Für mich sieht das auch nach copy past ohne viel grundwissen aus.

Bleibe aber bei meiner Meinung das da was mit der Registrierung der App bei Google nicht passt.
Was das sein könnte könnte man vielleicht durch sinnvolles logging herausfinden. Was er nicht macht.

So jetzt ist Schluß.


----------



## kneitzel (16. Jul 2021)

Jw456 hat gesagt.:


> Es war eigentlich eine Zustimmung die du nicht verstanden hast.


Sorry, wenn ich dich missverstanden habe.

Dein Eindruck ist ansonsten auch mein Eindruck und ich bin etwas ungehalten (oder war es gestern), denn die Antworten vom TE waren zumindest unerwartet


----------



## wer112 (16. Jul 2021)

kneitzel hat gesagt.:


> Sorry, aber so kommen wir nicht weiter.
> 
> onBillingError wird aufgerufen, wenn es bei der Abrechnung Probleme gab. Das interessiert Dich nicht?
> 
> ...




ich bin im Gegensatz zu dir noch ein Anfänger. Ich habe sowas noch nie gemacht. Ich bin am ständigen Lernen. Ich nehme ja Ratschläge an. Wenn du einem Baby sagst, es soll lesen, dann kannst du verstehen, das baby es nicht versteht. Also ich muss ja erst das lernen, damit ich weiß, wie es geht....


1. onBillingError interessiert mich, aber ich weiß nicht wie ich es benutze bzw. richtig anzeigen lassen kann. 

2. Den Tipp mit den Logcats habe ich jetzt mal gemacht, um zu sehen, wo das Problem ist. 
Mein Ergebniss ist: es kommt erst garnicht in die onProductPurchase Methode rein. Es bleibt in der oncreatview. 

Das ist der mit Logcats bestückter Code:

[CODE lang="java" title="Logcats besetzter Code"]package ..........;

import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;


import com.anjlab.android.iab.v3.BillingProcessor;
import com.anjlab.android.iab.v3.TransactionDetails;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.EventListener;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.FirebaseFirestoreException;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class fragment_shop  extends Fragment implements BillingProcessor.IBillingHandler  {

    TextView coinText, neuerShopText;

    private Button btn1, btn2, btn3, btn4, btn5, btn6;




    private BillingProcessor bp;



    FirebaseAuth fAuth;
    FirebaseFirestore fStore;

    String userID;


    private int coins = 0;


    private String produktId = "";






    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    /* --------------------------------- Hier kommt alles rein, was normalerweise in die onCreat Methode kommt -------------------------------- */
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {

        Log.d("create", "Starten onCreateView");

        View fragmentlayout_shop = inflater.inflate(R.layout.shop_layout, null);

        Log.d("create", "Coin Text wird gefunden(findViewByID)");
        coinText = (TextView)fragmentlayout_shop.findViewById(R.id.textView7);

        neuerShopText = (TextView)fragmentlayout_shop.findViewById(R.id.neuerShop);
        neuerShopText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(getActivity(), neuerShop.class));
            }
        });


        Log.d("create", "Laden der LadenCoins() Methode");
        LadenCoins();


        Log.d("create", "FirebaseAuth, FrebaseFirestore, UserId wird geladen...");
        fAuth = FirebaseAuth.getInstance();
        fStore = FirebaseFirestore.getInstance();
        userID = fAuth.getCurrentUser().getUid();

        Log.d("create", "Buttons werden gefunden(findViewByID)");
        btn1 = (Button)fragmentlayout_shop.findViewById(R.id.button2);
        btn2 = (Button)fragmentlayout_shop.findViewById(R.id.button3);
        btn3 = (Button)fragmentlayout_shop.findViewById(R.id.button4);
        btn4 = (Button)fragmentlayout_shop.findViewById(R.id.button6);
        btn5 = (Button)fragmentlayout_shop.findViewById(R.id.button7);
        btn6 = (Button)fragmentlayout_shop.findViewById(R.id.button8);


        Log.d("create", "neuer BillingProcessor wird gemacht und mit der Lizenz aus den Strings...");

        bp = new BillingProcessor(getActivity(), getResources().getString(R.string.play_console_license), fragment_shop.this);

        Log.d("create", "der BillingProcessor wird initialize... (Die Methode wird aufgerufen(onBillingInitialized())");
        bp.initialize();



        return fragmentlayout_shop;
    }





    public void onBackPressed() {
        Log.e("######","Du kommst hier net raus");
    }

    private void LadenCoins() {

        Log.d("ladencoins", "Ankunft Laden Coins");

        Log.d("ladencoins", "FirebaseAuth, FrebaseFirestore, UserId wird geladen...");
        fAuth = FirebaseAuth.getInstance();
        fStore = FirebaseFirestore.getInstance();
        userID = fAuth.getCurrentUser().getUid();

        Log.d("ladencoins", "Dokument Guthaben wird geladen");
        DocumentReference documentReference = fStore.collection("Guthaben").document(userID);

        documentReference.addSnapshotListener(getActivity(), new EventListener<DocumentSnapshot>() {
            @Override
            public void onEvent(@Nullable DocumentSnapshot value, @Nullable FirebaseFirestoreException error) {
                Log.d("ladencoins", "Coins wird aus der Datenbank in coins geladen");
                coins = value.getLong("Coins").intValue();
                Log.d("ladencoins", "der CoinText wird aktualisiert");
                coinText.setText("" + coins);


            }
        });



    }


    @Override
    public void onBillingInitialized() {

        Log.d("onBillingIn_Methode", "Ankunft in der onBillingInitialized Methode");


        btn1.setOnClickListener(v ->{
            Log.d("onBillingIn_Methode", "Button 1 wurde gedrückt");
            Log.d("onBillingIn_Methode", "if abfrage wird gestarten, um zu fagen ob BillingProcessor ist einmal Kauf Supported");
            if(bp.isOneTimePurchaseSupported()){
                Log.d("onBillingIn_Methode", "Es ist supported");
                Log.d("onBillingIn_Methode", "wird gekauft");
                bp.purchase(getActivity(), "product_zehn_coins");
                Log.d("onBillingIn_Methode", "wird konsumiert");
                bp.consumePurchase("product_zehn_coins");
                Log.d("onBillingIn_Methode", "produktId wird gesetzt");
                produktId = "product_zehn_coins";

            }else{

            }
        });

        btn2.setOnClickListener(v ->{
            Log.d("onBillingIn_Methode", "Button 2 wurde gedrückt");
            Log.d("onBillingIn_Methode", "if abfrage wird gestarten, um zu fagen ob BillingProcessor ist einmal Kauf Supported");
            if(bp.isOneTimePurchaseSupported()){
                Log.d("onBillingIn_Methode", "Es ist supported");
                Log.d("onBillingIn_Methode", "wird gekauft");
                bp.purchase(getActivity(), "product_fuenfundzwanzig_coins");
                Log.d("onBillingIn_Methode", "wird konsumiert");
                bp.consumePurchase("product_fuenfundzwanzig_coins");
                Log.d("onBillingIn_Methode", "produktId wird gesetzt");
                produktId = "product_fuenfundzwanzig_coins";

            }else{

            }
        });

        btn3.setOnClickListener(v ->{
            Log.d("onBillingIn_Methode", "Button 3 wurde gedrückt");
            Log.d("onBillingIn_Methode", "if abfrage wird gestarten, um zu fagen ob BillingProcessor ist einmal Kauf Supported");
            if(bp.isOneTimePurchaseSupported()){
                Log.d("onBillingIn_Methode", "Es ist supported");
                Log.d("onBillingIn_Methode", "wird gekauft");
                bp.purchase(getActivity(), "product_fuenfzig_coins");
                Log.d("onBillingIn_Methode", "wird konsumiert");
                bp.consumePurchase("product_fuenfzig_coins");
                Log.d("onBillingIn_Methode", "produktId wird gesetzt");
                produktId = "product_fuenfzig_coins";

            }else{

            }
        });

        btn4.setOnClickListener(v ->{
            Log.d("onBillingIn_Methode", "Button 4 wurde gedrückt");
            Log.d("onBillingIn_Methode", "if abfrage wird gestarten, um zu fagen ob BillingProcessor ist einmal Kauf Supported");
            if(bp.isOneTimePurchaseSupported()){
                Log.d("onBillingIn_Methode", "Es ist supported");
                Log.d("onBillingIn_Methode", "wird gekauft");
                bp.purchase(getActivity(), "product_einhundert_coins");
                Log.d("onBillingIn_Methode", "wird konsumiert");
                bp.consumePurchase("product_einhundert_coins");
                Log.d("onBillingIn_Methode", "produktId wird gesetzt");
                produktId = "product_einhundert_coins";

            }else{

            }
        });

        btn5.setOnClickListener(v ->{
            Log.d("onBillingIn_Methode", "Button 5 wurde gedrückt");
            Log.d("onBillingIn_Methode", "if abfrage wird gestarten, um zu fagen ob BillingProcessor ist einmal Kauf Supported");
            if(bp.isOneTimePurchaseSupported()){
                Log.d("onBillingIn_Methode", "Es ist supported");
                Log.d("onBillingIn_Methode", "wird gekauft");
                bp.purchase(getActivity(), "product_eintausend_coins");
                Log.d("onBillingIn_Methode", "wird konsumiert");
                bp.consumePurchase("product_eintausend_coins");
                Log.d("onBillingIn_Methode", "produktId wird gesetzt");
                produktId = "product_eintausend_coins";

            }else{

            }
        });

        btn6.setOnClickListener(v ->{
            Log.d("onBillingIn_Methode", "Button 6 wurde gedrückt");
            Log.d("onBillingIn_Methode", "if abfrage wird gestarten, um zu fagen ob BillingProcessor ist einmal Kauf Supported");
            if(bp.isOneTimePurchaseSupported()){
                Log.d("onBillingIn_Methode", "Es ist supported");
                Log.d("onBillingIn_Methode", "wird gekauft");
                bp.purchase(getActivity(), "product_fuenftausend_coins");
                Log.d("onBillingIn_Methode", "wird konsumiert");
                bp.consumePurchase("product_fuenftausend_coins");
                Log.d("onBillingIn_Methode", "produktId wird gesetzt");
                produktId = "product_fuenftausend_coins";

            }else{

            }
        });

    }


    @Override
    public void onProductPurchased(String productId, TransactionDetails details) {

        Log.d("onProductPurchased", "Ankunft in der onProductPurchased Methode");

        if (produktId == "product_zehn_coins"){
            Log.d("onProductPurchased", "Abfrage, ob produktId gleich" + produktId + " ist");
            Log.d("onProductPurchased", "Coins wird gesetzt");
            coins += 10;

            Log.d("onProductPurchased", "Coins werden in der Datenbank gepeichert");
            fAuth = FirebaseAuth.getInstance();
            fStore = FirebaseFirestore.getInstance();
            userID = fAuth.getCurrentUser().getUid();

            DocumentReference documentReference = fStore.collection("Guthaben").document(userID);
            Map<String, Object> user_guthaben = new HashMap<>();
            user_guthaben.put("Coins", coins);
            documentReference.set(user_guthaben);

            Log.d("onProductPurchased", "Coins Text wird aktualisiert");
            coinText.setText(coins + " Coins");

        }
        Log.d("onProductPurchased", "Abfrage, ob produktId gleich" + produktId + " ist");
        if (produktId == "product_fuenfundzwanzig_coins"){
            Log.d("onProductPurchased", "Abfrage, ob produktId gleich" + produktId + " ist");
            Log.d("onProductPurchased", "Coins wird gesetzt");
            coins += 25;

            Log.d("onProductPurchased", "Coins werden in der Datenbank gepeichert");
            fAuth = FirebaseAuth.getInstance();
            fStore = FirebaseFirestore.getInstance();
            userID = fAuth.getCurrentUser().getUid();

            DocumentReference documentReference = fStore.collection("Guthaben").document(userID);
            Map<String, Object> user_guthaben = new HashMap<>();
            user_guthaben.put("Coins", coins);
            documentReference.set(user_guthaben);

            Log.d("onProductPurchased", "Coins Text wird aktualisiert");
            coinText.setText(coins + " Coins");

        }

        if (produktId == "product_fuenfzig_coins"){
            Log.d("onProductPurchased", "Abfrage, ob produktId gleich" + produktId + " ist");
            Log.d("onProductPurchased", "Coins wird gesetzt");
            coins += 50;

            Log.d("onProductPurchased", "Coins werden in der Datenbank gepeichert");
            fAuth = FirebaseAuth.getInstance();
            fStore = FirebaseFirestore.getInstance();
            userID = fAuth.getCurrentUser().getUid();

            DocumentReference documentReference = fStore.collection("Guthaben").document(userID);
            Map<String, Object> user_guthaben = new HashMap<>();
            user_guthaben.put("Coins", coins);
            documentReference.set(user_guthaben);

            Log.d("onProductPurchased", "Coins Text wird aktualisiert");
            coinText.setText(coins + " Coins");

        }

        if (produktId == "product_einhundert_coins"){

            Log.d("onProductPurchased", "Abfrage, ob produktId gleich" + produktId + " ist");
            Log.d("onProductPurchased", "Coins wird gesetzt");
            coins += 100;

            Log.d("onProductPurchased", "Coins werden in der Datenbank gepeichert");
            fAuth = FirebaseAuth.getInstance();
            fStore = FirebaseFirestore.getInstance();
            userID = fAuth.getCurrentUser().getUid();

            DocumentReference documentReference = fStore.collection("Guthaben").document(userID);
            Map<String, Object> user_guthaben = new HashMap<>();
            user_guthaben.put("Coins", coins);
            documentReference.set(user_guthaben);

            Log.d("onProductPurchased", "Coins Text wird aktualisiert");
            coinText.setText(coins + " Coins");

        }

        if (produktId == "product_eintausend_coins"){
            Log.d("onProductPurchased", "Abfrage, ob produktId gleich" + produktId + " ist");
            Log.d("onProductPurchased", "Coins wird gesetzt");
            coins += 1000;

            Log.d("onProductPurchased", "Coins werden in der Datenbank gepeichert");
            fAuth = FirebaseAuth.getInstance();
            fStore = FirebaseFirestore.getInstance();
            userID = fAuth.getCurrentUser().getUid();

            DocumentReference documentReference = fStore.collection("Guthaben").document(userID);
            Map<String, Object> user_guthaben = new HashMap<>();
            user_guthaben.put("Coins", coins);
            documentReference.set(user_guthaben);

            Log.d("onProductPurchased", "Coins Text wird aktualisiert");
            coinText.setText(coins + " Coins");

        }

        if (produktId == "product_fuenftausend_coins"){
            Log.d("onProductPurchased", "Abfrage, ob produktId gleich" + produktId + " ist");
            Log.d("onProductPurchased", "Coins wird gesetzt");
            coins += 5000;

            Log.d("onProductPurchased", "Coins werden in der Datenbank gepeichert");
            fAuth = FirebaseAuth.getInstance();
            fStore = FirebaseFirestore.getInstance();
            userID = fAuth.getCurrentUser().getUid();

            DocumentReference documentReference = fStore.collection("Guthaben").document(userID);
            Map<String, Object> user_guthaben = new HashMap<>();
            user_guthaben.put("Coins", coins);
            documentReference.set(user_guthaben);

            Log.d("onProductPurchased", "Coins Text wird aktualisiert");
            coinText.setText(coins + " Coins");



        }



    }

    @Override
    public void onPurchaseHistoryRestored() {

    }

    @Override
    public void onBillingError(int errorCode, Throwable error) {


    }


}








[/CODE]


und das ist der gesammter Logcat:



[CODE title="Gesammter Logcat, mit Kauf..."]2021-07-16 10:28:09.914 23605-23605/? E/Zygote: isWhitelistProcess - Process is Whitelisted
2021-07-16 10:28:09.915 23605-23605/? E/Zygote: accessInfo : 1
2021-07-16 10:28:09.922 23605-23605/? I/okfollowerlike: Late-enabling -Xcheck:jni
2021-07-16 10:28:10.695 23605-23605/? W/ComponentDiscovery: Class com.google.firebase.dynamicloading.DynamicLoadingRegistrar is not an found.
2021-07-16 10:28:10.712 23605-23605/? I/FirebaseApp: Device unlocked: initializing all Firebase APIs for app [DEFAULT]
2021-07-16 10:28:10.754 23605-23640/? W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
2021-07-16 10:28:10.763 23605-23605/? I/FirebaseInitProvider: FirebaseApp initialization successful
2021-07-16 10:28:10.781 23605-23645/? W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
2021-07-16 10:28:10.786 23605-23648/? D/vndksupport: Loading /vendor/lib64/egl/libGLES_mali.so from current namespace instead of sphal namespace.
2021-07-16 10:28:10.793 23605-23645/? I/FirebaseAuth: [FirebaseAuth:] Preparing to create service connection to gms implementation
2021-07-16 10:28:10.897 23605-23605/? W/okfollowerlike: Accessing hidden method Landroid/graphics/drawable/Drawable;->getOpticalInsets()Landroid/graphics/Insets; (light greylist, linking)
2021-07-16 10:28:10.897 23605-23605/? W/okfollowerlike: Accessing hidden field Landroid/graphics/Insets;->left:I (light greylist, linking)
2021-07-16 10:28:10.897 23605-23605/? W/okfollowerlike: Accessing hidden field Landroid/graphics/Insets;->right:I (light greylist, linking)
2021-07-16 10:28:10.897 23605-23605/? W/okfollowerlike: Accessing hidden field Landroid/graphics/Insets;->top:I (light greylist, linking)
2021-07-16 10:28:10.897 23605-23605/? W/okfollowerlike: Accessing hidden field Landroid/graphics/Insets;->bottom:I (light greylist, linking)
2021-07-16 10:28:10.929 23605-23605/? I/DecorView: createDecorCaptionView >> DecorView@409f029[], isFloating: false, isApplication: true, hasWindowDecorCaption: false, hasWindowControllerCallback: true
2021-07-16 10:28:10.935 23605-23648/? D/libEGL: loaded /vendor/lib64/egl/libGLES_mali.so
2021-07-16 10:28:10.960 23605-23605/? W/okfollowerlike: Accessing hidden method Landroid/view/View;->getAccessibilityDelegate()Landroid/view/View$AccessibilityDelegate; (light greylist, linking)
2021-07-16 10:28:10.967 23605-23605/? W/okfollowerlike: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/RectZ (light greylist, reflection)
2021-07-16 10:28:10.967 23605-23605/? W/okfollowerlike: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (light greylist, reflection)
2021-07-16 10:28:10.995 23605-23605/? W/okfollowerlike: Accessing hidden method Landroid/graphics/FontFamily;-><init>()V (light greylist, reflection)
2021-07-16 10:28:10.996 23605-23605/? W/okfollowerlike: Accessing hidden method Landroid/graphics/FontFamily;->addFontFromAssetManager(Landroid/content/res/AssetManager;Ljava/lang/String;IZIII[Landroid/graphics/fonts/FontVariationAxisZ (light greylist, reflection)
2021-07-16 10:28:10.996 23605-23605/? W/okfollowerlike: Accessing hidden method Landroid/graphics/FontFamily;->addFontFromBuffer(Ljava/nio/ByteBuffer;I[Landroid/graphics/fonts/FontVariationAxis;II)Z (light greylist, reflection)
2021-07-16 10:28:10.996 23605-23605/? W/okfollowerlike: Accessing hidden method Landroid/graphics/FontFamily;->freeze()Z (light greylist, reflection)
2021-07-16 10:28:10.996 23605-23605/? W/okfollowerlike: Accessing hidden method Landroid/graphics/FontFamily;->abortCreation()V (light greylist, reflection)
2021-07-16 10:28:10.996 23605-23605/? W/okfollowerlike: Accessing hidden method Landroid/graphics/Typeface;->createFromFamiliesWithDefault([Landroid/graphics/FontFamily;Ljava/lang/String;II)Landroid/graphics/Typeface; (light greylist, reflection)
2021-07-16 10:28:11.032 23605-23605/? D/OpenGLRenderer: Skia GL Pipeline
2021-07-16 10:28:11.037 23605-23605/? D/EmergencyMode: [EmergencyManager] android createPackageContext successful
2021-07-16 10:28:11.065 23605-23605/? D/InputTransport: Input channel constructed: fd=62
2021-07-16 10:28:11.066 23605-23605/? D/ViewRootImpl@53ba05e[MainActivity]: setView = DecorView@409f029[MainActivity] TM=true MM=false
2021-07-16 10:28:11.072 23605-23605/? D/ViewRootImpl@53ba05e[MainActivity]: dispatchAttachedToWindow
2021-07-16 10:28:11.079 23605-23605/? W/okfollowerlike: Accessing hidden field Landroid/view/WindowInsets;->CONSUMED:Landroid/view/WindowInsets; (light greylist, reflection)
2021-07-16 10:28:11.080 23605-23605/? W/okfollowerlike: Accessing hidden method Landroid/graphics/Insets;->of(IIII)Landroid/graphics/Insets; (light greylist, linking)
2021-07-16 10:28:11.107 23605-23605/? D/ViewRootImpl@53ba05e[MainActivity]: Relayout returned: old=[0,0][1080,2220] new=[0,0][1080,2220] result=0x7 surface={valid=true 501580263424} changed=true
2021-07-16 10:28:11.121 23605-23605/? D/ViewRootImpl@53ba05e[MainActivity]: MSG_RESIZED: frame=Rect(0, 0 - 1080, 2220) ci=Rect(0, 76 - 0, 152) vi=Rect(0, 76 - 0, 152) or=1
2021-07-16 10:28:11.121 23605-23605/? D/ViewRootImpl@53ba05e[MainActivity]: MSG_WINDOW_FOCUS_CHANGED 1 1
2021-07-16 10:28:11.122 23605-23605/? D/InputMethodManager: prepareNavigationBarInfo() DecorView@409f029[MainActivity]
2021-07-16 10:28:11.122 23605-23605/? D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:28:11.123 23605-23605/? D/InputMethodManager: prepareNavigationBarInfo() DecorView@409f029[MainActivity]
2021-07-16 10:28:11.123 23605-23668/? I/ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0
2021-07-16 10:28:11.123 23605-23605/? D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:28:11.123 23605-23668/? I/ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 0
2021-07-16 10:28:11.123 23605-23668/? I/OpenGLRenderer: Initialized EGL, version 1.4
2021-07-16 10:28:11.124 23605-23668/? D/OpenGLRenderer: Swap behavior 2
2021-07-16 10:28:11.125 23605-23605/? V/InputMethodManager: Starting input: tba=de.klugaug.tiktokfollowerlikes ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : false , NavTrans : false
2021-07-16 10:28:11.125 23605-23605/? D/InputMethodManager: startInputInner - Id : 0
2021-07-16 10:28:11.125 23605-23605/? I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
2021-07-16 10:28:11.140 23605-23618/? D/InputTransport: Input channel constructed: fd=72
2021-07-16 10:28:11.141 23605-23668/? D/mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
2021-07-16 10:28:11.141 23605-23668/? D/OpenGLRenderer: eglCreateWindowSurface = 0x74c8f04c80, 0x74c8837010
2021-07-16 10:28:11.151 23605-23668/? D/vndksupport: Loading /vendor/lib64/hw/android.hardware.graphics.mapper@2.0-impl.so from current namespace instead of sphal namespace.
2021-07-16 10:28:11.251 23605-23605/? D/InputMethodManager: prepareNavigationBarInfo() DecorView@409f029[MainActivity]
2021-07-16 10:28:11.251 23605-23605/? D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:28:11.251 23605-23605/? V/InputMethodManager: Starting input: tba=de.klugaug.tiktokfollowerlikes ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : false , NavTrans : false
2021-07-16 10:28:11.251 23605-23605/? D/InputMethodManager: startInputInner - Id : 0
2021-07-16 10:28:11.268 23605-23605/? D/ViewRootImpl@53ba05e[MainActivity]: MSG_RESIZED: frame=Rect(0, 0 - 1080, 2220) ci=Rect(0, 76 - 0, 152) vi=Rect(0, 76 - 0, 0) or=1
2021-07-16 10:28:11.676 23605-23605/? D/ViewRootImpl@53ba05e[MainActivity]: MSG_RESIZED: frame=Rect(0, 0 - 1080, 2220) ci=Rect(0, 76 - 0, 152) vi=Rect(0, 0 - 0, 0) or=1
2021-07-16 10:28:14.107 23605-23605/de.klugaug.tiktokfollowerlikes I/DecorView: createDecorCaptionView >> DecorView@f10c0c3[], isFloating: false, isApplication: true, hasWindowDecorCaption: false, hasWindowControllerCallback: true
2021-07-16 10:28:14.249 23605-23605/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel constructed: fd=79
2021-07-16 10:28:14.250 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@dd3407e[login]: setView = DecorView@f10c0c3[login] TM=true MM=false
2021-07-16 10:28:14.251 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@53ba05e[MainActivity]: MSG_WINDOW_FOCUS_CHANGED 0 1
2021-07-16 10:28:14.251 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@409f029[MainActivity]
2021-07-16 10:28:14.251 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:28:14.262 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@dd3407e[login]: dispatchAttachedToWindow
2021-07-16 10:28:14.293 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@dd3407e[login]: Relayout returned: old=[0,0][1080,2220] new=[0,0][1080,2220] result=0x7 surface={valid=true 501581447168} changed=true
2021-07-16 10:28:14.310 23605-23668/de.klugaug.tiktokfollowerlikes D/mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
2021-07-16 10:28:14.310 23605-23668/de.klugaug.tiktokfollowerlikes D/OpenGLRenderer: eglCreateWindowSurface = 0x74afffe980, 0x74c8958010
2021-07-16 10:28:14.371 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@dd3407e[login]: MSG_RESIZED: frame=Rect(0, 0 - 1080, 2220) ci=Rect(0, 76 - 0, 152) vi=Rect(0, 0 - 0, 0) or=1
2021-07-16 10:28:14.372 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@dd3407e[login]: MSG_WINDOW_FOCUS_CHANGED 1 1
2021-07-16 10:28:14.409 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@f10c0c3[login]
2021-07-16 10:28:14.409 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:28:14.426 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@f10c0c3[login]
2021-07-16 10:28:14.426 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:28:14.426 23605-23605/de.klugaug.tiktokfollowerlikes V/InputMethodManager: Starting input: tba=de.klugaug.tiktokfollowerlikes ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : false , NavTrans : false
2021-07-16 10:28:14.426 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: startInputInner - Id : 0
2021-07-16 10:28:14.426 23605-23605/de.klugaug.tiktokfollowerlikes I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
2021-07-16 10:28:14.430 23605-23605/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel constructed: fd=81
2021-07-16 10:28:14.431 23605-23605/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel destroyed: fd=72
2021-07-16 10:28:14.716 23605-23668/de.klugaug.tiktokfollowerlikes W/libEGL: EGLNativeWindowType 0x74c8837010 disconnect failed
2021-07-16 10:28:14.717 23605-23668/de.klugaug.tiktokfollowerlikes D/OpenGLRenderer: eglDestroySurface = 0x74c8f04c80, 0x74c8837000
2021-07-16 10:28:14.734 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@53ba05e[MainActivity]: Relayout returned: old=[0,0][1080,2220] new=[0,0][1080,2220] result=0x5 surface={valid=false 0} changed=true
2021-07-16 10:28:14.737 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@53ba05e[MainActivity]: setWindowStopped(true) old=false
2021-07-16 10:28:14.738 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@53ba05e[MainActivity]: Surface release. android.view.WindowManagerGlobal.setStoppedState:669 android.app.Activity.performStop:7650 android.app.ActivityThread.callActivityOnStop:4379 android.app.ActivityThread.performStopActivityInner:4357 android.app.ActivityThread.handleStopActivity:4432 android.app.servertransaction.StopActivityItem.execute:41 android.app.servertransaction.TransactionExecutor.executeLifecycleState:145 android.app.servertransaction.TransactionExecutor.execute:70
2021-07-16 10:28:18.134 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@dd3407e[login]: ViewPostIme pointer 0
2021-07-16 10:28:18.293 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@dd3407e[login]: ViewPostIme pointer 1
2021-07-16 10:28:18.344 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@f10c0c3[login]
2021-07-16 10:28:18.344 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:28:18.344 23605-23605/de.klugaug.tiktokfollowerlikes V/InputMethodManager: Starting input: tba=de.klugaug.tiktokfollowerlikes ic=com.android.internal.widget.EditableInputConnection@1ed2c53 mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : false , NavTrans : false
2021-07-16 10:28:18.344 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: startInputInner - Id : 0
2021-07-16 10:28:18.350 23605-23605/de.klugaug.tiktokfollowerlikes I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
2021-07-16 10:28:18.355 23605-23605/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel constructed: fd=80
2021-07-16 10:28:18.355 23605-23605/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel destroyed: fd=81
2021-07-16 10:28:18.355 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: SSI - flag : 0 Pid : 23605 view : de.klugaug.tiktokfollowerlikes
2021-07-16 10:28:18.356 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@f10c0c3[login]
2021-07-16 10:28:18.356 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:28:18.384 23605-23605/de.klugaug.tiktokfollowerlikes I/AssistStructure: Flattened final assist data: 3048 bytes, containing 1 windows, 9 views
2021-07-16 10:28:18.775 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@dd3407e[login]: MSG_RESIZED: frame=Rect(0, 0 - 1080, 2220) ci=Rect(0, 76 - 0, 152) vi=Rect(0, 0 - 0, 1118) or=1
2021-07-16 10:28:18.930 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@53ba05e[MainActivity]: Relayout returned: old=[0,0][1080,2220] new=[0,0][1080,2220] result=0x1 surface={valid=false 0} changed=false
2021-07-16 10:28:18.932 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@dd3407e[login]: MSG_RESIZED: frame=Rect(0, 0 - 1080, 2220) ci=Rect(0, 76 - 0, 152) vi=Rect(0, 76 - 0, 1118) or=1
2021-07-16 10:28:18.957 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@dd3407e[login]: Relayout returned: old=[0,0][1080,2220] new=[0,0][1080,2220] result=0x1 surface={valid=true 501581447168} changed=false
2021-07-16 10:28:20.388 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@dd3407e[login]: MSG_RESIZED: frame=Rect(0, 0 - 1080, 2220) ci=Rect(0, 76 - 0, 152) vi=Rect(0, 76 - 0, 1117) or=1
2021-07-16 10:28:22.535 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@dd3407e[login]: ViewPostIme key 0
2021-07-16 10:28:22.536 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@dd3407e[login]: ViewPostIme key 1
2021-07-16 10:28:22.557 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@f10c0c3[login]
2021-07-16 10:28:22.557 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:28:22.557 23605-23605/de.klugaug.tiktokfollowerlikes V/InputMethodManager: Starting input: tba=de.klugaug.tiktokfollowerlikes ic=com.android.internal.widget.EditableInputConnection@9cdae87 mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
2021-07-16 10:28:22.557 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: startInputInner - Id : 0
2021-07-16 10:28:22.562 23605-23605/de.klugaug.tiktokfollowerlikes I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
2021-07-16 10:28:22.565 23605-23605/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel constructed: fd=81
2021-07-16 10:28:22.565 23605-23605/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel destroyed: fd=80
2021-07-16 10:28:22.926 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@dd3407e[login]: MSG_RESIZED: frame=Rect(0, 0 - 1080, 2220) ci=Rect(0, 76 - 0, 152) vi=Rect(0, 76 - 0, 1118) or=1
2021-07-16 10:28:22.974 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@dd3407e[login]: ViewPostIme key 0
2021-07-16 10:28:23.050 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@dd3407e[login]: ViewPostIme key 1
2021-07-16 10:28:28.749 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@dd3407e[login]: ViewPostIme key 0
2021-07-16 10:28:28.750 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@dd3407e[login]: ViewPostIme key 1
2021-07-16 10:28:28.752 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: HSIFW - flag : 0 Pid : 23605
2021-07-16 10:28:29.044 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@dd3407e[login]: MSG_RESIZED: frame=Rect(0, 0 - 1080, 2220) ci=Rect(0, 76 - 0, 152) vi=Rect(0, 76 - 0, 152) or=1
2021-07-16 10:28:29.580 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@dd3407e[login]: ViewPostIme pointer 0
2021-07-16 10:28:29.646 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@dd3407e[login]: ViewPostIme pointer 1
2021-07-16 10:28:29.658 23605-23605/de.klugaug.tiktokfollowerlikes I/BiChannelGoogleApi: [FirebaseAuth: ] getGoogleApiForMethod() returned Gms: com.google.firebase.auth.api.internal.zzaq@d894ce5
2021-07-16 10:28:31.176 23605-23618/de.klugaug.tiktokfollowerlikes D/FirebaseAuth: Notifying id token listeners about user ( Yo6144ILkzTbmdycialp2MvASXF3 ).
2021-07-16 10:28:31.179 23605-23618/de.klugaug.tiktokfollowerlikes D/FirebaseAuth: Notifying auth state listeners about user ( Yo6144ILkzTbmdycialp2MvASXF3 ).
2021-07-16 10:28:31.256 23605-23605/de.klugaug.tiktokfollowerlikes W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@8b32274
2021-07-16 10:28:31.257 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@dd3407e[login]: MSG_WINDOW_FOCUS_CHANGED 0 1
2021-07-16 10:28:31.257 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@f10c0c3[login]
2021-07-16 10:28:31.257 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:28:31.305 23605-23605/de.klugaug.tiktokfollowerlikes I/DecorView: createDecorCaptionView >> DecorView@7881cf8[], isFloating: false, isApplication: true, hasWindowDecorCaption: false, hasWindowControllerCallback: true
2021-07-16 10:28:31.506 23605-24747/de.klugaug.tiktokfollowerlikes W/DynamiteModule: Local module descriptor class for providerinstaller not found.
2021-07-16 10:28:31.529 23605-24747/de.klugaug.tiktokfollowerlikes I/DynamiteModule: Considering local module providerinstaller:0 and remote module providerinstaller:0
2021-07-16 10:28:31.529 23605-24747/de.klugaug.tiktokfollowerlikes W/ProviderInstaller: Failed to load providerinstaller module: No acceptable module found. Local version is 0 and remote version is 0.
2021-07-16 10:28:31.532 23605-24747/de.klugaug.tiktokfollowerlikes W/okfollowerlike: Unknown chunk type '200'.
2021-07-16 10:28:31.549 23605-24747/de.klugaug.tiktokfollowerlikes I/okfollowerlike: The ClassLoaderContext is a special shared library.
2021-07-16 10:28:31.553 23605-24747/de.klugaug.tiktokfollowerlikes I/chatty: uid=10357(de.klugaug.tiktokfollowerlikes) AsyncTask #1 identical 1 line
2021-07-16 10:28:31.556 23605-24747/de.klugaug.tiktokfollowerlikes I/okfollowerlike: The ClassLoaderContext is a special shared library.
2021-07-16 10:28:31.586 23605-24747/de.klugaug.tiktokfollowerlikes V/NativeCrypto: Registering com/google/android/gms/org/conscrypt/NativeCrypto's 294 native methods...
2021-07-16 10:28:31.612 23605-24747/de.klugaug.tiktokfollowerlikes W/okfollowerlike: Accessing hidden method Ljava/security/spec/ECParameterSpec;->getCurveName()Ljava/lang/String; (light greylist, reflection)
2021-07-16 10:28:31.620 23605-24746/de.klugaug.tiktokfollowerlikes D/ConnectivityManager: requestNetwork; CallingUid : 10357, CallingPid : 23605
2021-07-16 10:28:31.670 23605-24747/de.klugaug.tiktokfollowerlikes D/NetworkSecurityConfig: Using Network Security Config from resource network_security_config debugBuild: true
2021-07-16 10:28:31.679 23605-24747/de.klugaug.tiktokfollowerlikes I/ProviderInstaller: Installed default security provider GmsCore_OpenSSL
2021-07-16 10:28:31.694 23605-24746/de.klugaug.tiktokfollowerlikes W/okfollowerlike: Accessing hidden field Ljava/nio/Buffer;->address:J (light greylist, reflection)
2021-07-16 10:28:31.740 23605-23605/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel constructed: fd=107
2021-07-16 10:28:31.740 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: setView = DecorView@7881cf8[home] TM=true MM=false
2021-07-16 10:28:31.755 23605-24747/de.klugaug.tiktokfollowerlikes D/ConnectivityManager: requestNetwork; CallingUid : 10357, CallingPid : 23605
2021-07-16 10:28:31.767 23605-23610/de.klugaug.tiktokfollowerlikes I/okfollowerlike: Compiler allocated 4MB to compile void android.widget.TextView.<init>(android.content.Context, android.util.AttributeSet, int, int)
2021-07-16 10:28:31.769 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: dispatchAttachedToWindow
2021-07-16 10:28:31.853 23605-24759/de.klugaug.tiktokfollowerlikes D/TcpOptimizer: TcpOptimizer-ON
2021-07-16 10:28:31.861 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: Relayout returned: old=[0,0][1080,2220] new=[0,0][1080,2220] result=0x7 surface={valid=true 501251997696} changed=true
2021-07-16 10:28:31.876 23605-23668/de.klugaug.tiktokfollowerlikes D/mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
2021-07-16 10:28:31.876 23605-23668/de.klugaug.tiktokfollowerlikes D/OpenGLRenderer: eglCreateWindowSurface = 0x74b599da00, 0x74b4f28010
2021-07-16 10:28:31.887 23605-24759/de.klugaug.tiktokfollowerlikes W/okfollowerlike: Accessing hidden field Ljava/net/Socket;->impl:Ljava/net/SocketImpl; (light greylist, reflection)
2021-07-16 10:28:31.889 23605-24759/de.klugaug.tiktokfollowerlikes W/okfollowerlike: Accessing hidden method Ldalvik/system/CloseGuard;->get()Ldalvik/system/CloseGuard; (light greylist, linking)
2021-07-16 10:28:31.898 23605-24759/de.klugaug.tiktokfollowerlikes W/okfollowerlike: Accessing hidden method Ldalvik/system/CloseGuard;->open(Ljava/lang/StringV (light greylist, linking)
2021-07-16 10:28:31.905 23605-24759/de.klugaug.tiktokfollowerlikes W/okfollowerlike: Accessing hidden field Ljava/io/FileDescriptor;->descriptor:I (light greylist, JNI)
2021-07-16 10:28:31.907 23605-23605/de.klugaug.tiktokfollowerlikes W/okfollowerlike: Accessing hidden field Landroid/os/Trace;->TRACE_TAG_APP:J (light greylist, reflection)
2021-07-16 10:28:31.907 23605-23605/de.klugaug.tiktokfollowerlikes W/okfollowerlike: Accessing hidden method Landroid/os/Trace;->isTagEnabled(J)Z (light greylist, reflection)
2021-07-16 10:28:31.907 23605-23605/de.klugaug.tiktokfollowerlikes W/okfollowerlike: Accessing hidden method Landroid/os/Trace;->asyncTraceBegin(JLjava/lang/String;I)V (light greylist, reflection)
2021-07-16 10:28:31.907 23605-23605/de.klugaug.tiktokfollowerlikes W/okfollowerlike: Accessing hidden method Landroid/os/Trace;->asyncTraceEnd(JLjava/lang/String;I)V (light greylist, reflection)
2021-07-16 10:28:31.907 23605-23605/de.klugaug.tiktokfollowerlikes W/okfollowerlike: Accessing hidden method Landroid/os/Trace;->traceCounter(JLjava/lang/String;I)V (light greylist, reflection)
2021-07-16 10:28:32.046 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: Relayout returned: old=[0,0][1080,2220] new=[0,0][1080,2220] result=0x3 surface={valid=true 501251997696} changed=false
2021-07-16 10:28:32.154 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: MSG_RESIZED: frame=Rect(0, 0 - 1080, 2220) ci=Rect(0, 76 - 0, 152) vi=Rect(0, 76 - 0, 152) or=1
2021-07-16 10:28:32.154 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: MSG_WINDOW_FOCUS_CHANGED 1 1
2021-07-16 10:28:32.168 23605-24759/de.klugaug.tiktokfollowerlikes W/okfollowerlike: Accessing hidden method Ljava/security/spec/ECParameterSpec;->setCurveName(Ljava/lang/StringV (light greylist, reflection)
2021-07-16 10:28:32.181 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@7881cf8[home]
2021-07-16 10:28:32.181 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:28:32.185 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@7881cf8[home]
2021-07-16 10:28:32.185 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:28:32.185 23605-23605/de.klugaug.tiktokfollowerlikes V/InputMethodManager: Starting input: tba=de.klugaug.tiktokfollowerlikes ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
2021-07-16 10:28:32.185 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: startInputInner - Id : 0
2021-07-16 10:28:32.185 23605-23605/de.klugaug.tiktokfollowerlikes I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
2021-07-16 10:28:32.190 23605-23605/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel constructed: fd=116
2021-07-16 10:28:32.190 23605-23605/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel destroyed: fd=81
2021-07-16 10:28:32.237 23605-24759/de.klugaug.tiktokfollowerlikes W/okfollowerlike: Accessing hidden method Ldalvik/system/BlockGuard;->getThreadPolicy()Ldalvik/system/BlockGuard$Policy; (light greylist, linking)
2021-07-16 10:28:32.237 23605-24759/de.klugaug.tiktokfollowerlikes W/okfollowerlike: Accessing hidden method Ldalvik/system/BlockGuard$Policy;->onNetwork()V (light greylist, linking)
2021-07-16 10:28:32.504 23605-23668/de.klugaug.tiktokfollowerlikes W/libEGL: EGLNativeWindowType 0x74c8958010 disconnect failed
2021-07-16 10:28:32.504 23605-23668/de.klugaug.tiktokfollowerlikes D/OpenGLRenderer: eglDestroySurface = 0x74afffe980, 0x74c8958000
2021-07-16 10:28:32.517 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@dd3407e[login]: Relayout returned: old=[0,0][1080,2220] new=[0,0][1080,2220] result=0x5 surface={valid=false 0} changed=true
2021-07-16 10:28:32.519 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@dd3407e[login]: setWindowStopped(true) old=false
2021-07-16 10:28:32.520 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@dd3407e[login]: Surface release. android.view.WindowManagerGlobal.setStoppedState:669 android.app.Activity.performStop:7650 android.app.ActivityThread.callActivityOnStop:4379 android.app.ActivityThread.performStopActivityInner:4357 android.app.ActivityThread.handleStopActivity:4432 android.app.servertransaction.StopActivityItem.execute:41 android.app.servertransaction.TransactionExecutor.executeLifecycleState:145 android.app.servertransaction.TransactionExecutor.execute:70
2021-07-16 10:28:37.485 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: ViewPostIme pointer 0
2021-07-16 10:28:37.574 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: ViewPostIme pointer 1
2021-07-16 10:28:37.666 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: Relayout returned: old=[0,0][1080,2220] new=[0,0][1080,2220] result=0x1 surface={valid=true 501251997696} changed=false
2021-07-16 10:28:40.958 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: ViewPostIme pointer 0
2021-07-16 10:28:41.057 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: ViewPostIme pointer 1
*2021-07-16 10:28:41.098 23605-23605/de.klugaug.tiktokfollowerlikes D/create: Starten onCreateView
2021-07-16 10:28:41.230 23605-23605/de.klugaug.tiktokfollowerlikes D/create: Coin Text wird gefunden(findViewByID)
2021-07-16 10:28:41.230 23605-23605/de.klugaug.tiktokfollowerlikes D/create: Laden der LadenCoins() Methode
2021-07-16 10:28:41.230 23605-23605/de.klugaug.tiktokfollowerlikes D/ladencoins: Ankunft Laden Coins
2021-07-16 10:28:41.230 23605-23605/de.klugaug.tiktokfollowerlikes D/ladencoins: FirebaseAuth, FrebaseFirestore, UserId wird geladen...
2021-07-16 10:28:41.230 23605-23605/de.klugaug.tiktokfollowerlikes D/ladencoins: Dokument Guthaben wird geladen
2021-07-16 10:28:41.231 23605-23605/de.klugaug.tiktokfollowerlikes D/create: FirebaseAuth, FrebaseFirestore, UserId wird geladen...
2021-07-16 10:28:41.231 23605-23605/de.klugaug.tiktokfollowerlikes D/create: Buttons werden gefunden(findViewByID)
2021-07-16 10:28:41.231 23605-23605/de.klugaug.tiktokfollowerlikes D/create: neuer BillingProcessor wird gemacht und mit der Lizenz aus den Strings...
2021-07-16 10:28:41.245 23605-23605/de.klugaug.tiktokfollowerlikes D/create: der BillingProcessor wird initialize... (Die Methode wird aufgerufen(onBillingInitialized())
2021-07-16 10:28:41.318 23605-23605/de.klugaug.tiktokfollowerlikes D/ladencoins: Coins wird aus der Datenbank in coins geladen
2021-07-16 10:28:41.318 23605-23605/de.klugaug.tiktokfollowerlikes D/ladencoins: der CoinText wird aktualisiert
2021-07-16 10:28:41.461 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: Ankunft in der onBillingInitialized Methode*
2021-07-16 10:28:41.515 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: Relayout returned: old=[0,0][1080,2220] new=[0,0][1080,2220] result=0x1 surface={valid=true 501251997696} changed=false
2021-07-16 10:28:46.109 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: ViewPostIme pointer 0
2021-07-16 10:28:46.191 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: ViewPostIme pointer 1
*2021-07-16 10:28:46.210 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: Button 1 wurde gedrückt
2021-07-16 10:28:46.210 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: if abfrage wird gestarten, um zu fagen ob BillingProcessor ist einmal Kauf Supported
2021-07-16 10:28:46.215 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: Es ist supported
2021-07-16 10:28:46.215 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: wird gekauft
2021-07-16 10:28:46.298 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: wird konsumiert
2021-07-16 10:28:47.383 23605-23605/de.klugaug.tiktokfollowerlikes D/iabv3: Successfully consumed product_zehn_coins purchase.
2021-07-16 10:28:47.383 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: produktId wird gesetzt*
2021-07-16 10:28:47.385 23605-23605/de.klugaug.tiktokfollowerlikes I/Choreographer: Skipped 69 frames!  The application may be doing too much work on its main thread.
2021-07-16 10:28:47.393 23605-23668/de.klugaug.tiktokfollowerlikes I/OpenGLRenderer: Davey! duration=1170ms; Flags=0, IntendedVsync=338230124131536, Vsync=338231274131490, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=338231287229228, AnimationStart=338231287242574, PerformTraversalsStart=338231289292882, DrawStart=338231289754766, SyncQueued=338231289843305, SyncStart=338231289908882, IssueDrawCommandsStart=338231290130574, SwapBuffers=338231292740036, FrameCompleted=338231294788459, DequeueBufferDuration=435000, QueueBufferDuration=605000,
2021-07-16 10:28:47.427 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: MSG_WINDOW_FOCUS_CHANGED 0 1
2021-07-16 10:28:47.427 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@7881cf8[home]
2021-07-16 10:28:47.427 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:28:47.452 23605-23605/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel destroyed: fd=116
2021-07-16 10:28:55.800 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: setWindowStopped(false) old=false
2021-07-16 10:28:55.849 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: MSG_WINDOW_FOCUS_CHANGED 1 1
2021-07-16 10:28:55.850 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@7881cf8[home]
2021-07-16 10:28:55.850 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:28:55.858 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@7881cf8[home]
2021-07-16 10:28:55.859 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:28:55.859 23605-23605/de.klugaug.tiktokfollowerlikes V/InputMethodManager: Starting input: tba=de.klugaug.tiktokfollowerlikes ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
2021-07-16 10:28:55.859 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: startInputInner - Id : 0
2021-07-16 10:28:55.860 23605-23605/de.klugaug.tiktokfollowerlikes I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
2021-07-16 10:28:55.864 23605-23605/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel constructed: fd=81
2021-07-16 10:29:00.568 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: ViewPostIme pointer 0
2021-07-16 10:29:00.645 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: ViewPostIme pointer 1
*2021-07-16 10:29:00.658 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: Button 1 wurde gedrückt
2021-07-16 10:29:00.658 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: if abfrage wird gestarten, um zu fagen ob BillingProcessor ist einmal Kauf Supported
2021-07-16 10:29:00.658 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: Es ist supported
2021-07-16 10:29:00.658 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: wird gekauft
2021-07-16 10:29:00.699 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: wird konsumiert
2021-07-16 10:29:00.700 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: produktId wird gesetzt*
2021-07-16 10:29:00.726 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: MSG_WINDOW_FOCUS_CHANGED 0 1
2021-07-16 10:29:00.726 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@7881cf8[home]
2021-07-16 10:29:00.726 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:29:00.876 23605-23605/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel destroyed: fd=81
2021-07-16 10:29:09.452 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: MSG_WINDOW_FOCUS_CHANGED 1 1
2021-07-16 10:29:09.453 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@7881cf8[home]
2021-07-16 10:29:09.454 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:29:09.503 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@7881cf8[home]
2021-07-16 10:29:09.503 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:29:09.503 23605-23605/de.klugaug.tiktokfollowerlikes V/InputMethodManager: Starting input: tba=de.klugaug.tiktokfollowerlikes ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
2021-07-16 10:29:09.504 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: startInputInner - Id : 0
2021-07-16 10:29:09.504 23605-23605/de.klugaug.tiktokfollowerlikes I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
2021-07-16 10:29:09.510 23605-23605/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel constructed: fd=81
2021-07-16 10:29:09.513 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: setWindowStopped(false) old=false
2021-07-16 10:29:10.195 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: ViewPostIme pointer 0
2021-07-16 10:29:10.269 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: ViewPostIme pointer 1
*2021-07-16 10:29:10.287 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: Button 1 wurde gedrückt
2021-07-16 10:29:10.287 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: if abfrage wird gestarten, um zu fagen ob BillingProcessor ist einmal Kauf Supported
2021-07-16 10:29:10.287 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: Es ist supported
2021-07-16 10:29:10.287 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: wird gekauft
2021-07-16 10:29:10.314 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: wird konsumiert
2021-07-16 10:29:10.314 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: produktId wird gesetzt*
2021-07-16 10:29:10.336 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: MSG_WINDOW_FOCUS_CHANGED 0 1
2021-07-16 10:29:10.336 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@7881cf8[home]
2021-07-16 10:29:10.336 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:29:10.477 23605-23605/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel destroyed: fd=81
2021-07-16 10:29:16.276 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: MSG_WINDOW_FOCUS_CHANGED 1 1
2021-07-16 10:29:16.277 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@7881cf8[home]
2021-07-16 10:29:16.277 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:29:16.283 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@7881cf8[home]
2021-07-16 10:29:16.283 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:29:16.284 23605-23605/de.klugaug.tiktokfollowerlikes V/InputMethodManager: Starting input: tba=de.klugaug.tiktokfollowerlikes ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
2021-07-16 10:29:16.284 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: startInputInner - Id : 0
2021-07-16 10:29:16.284 23605-23605/de.klugaug.tiktokfollowerlikes I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
2021-07-16 10:29:16.331 23605-23605/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel constructed: fd=81
2021-07-16 10:29:16.333 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: setWindowStopped(false) old=false
2021-07-16 10:29:16.516 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: ViewPostIme pointer 0
2021-07-16 10:29:16.583 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: ViewPostIme pointer 1
*2021-07-16 10:29:16.591 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: Button 1 wurde gedrückt
2021-07-16 10:29:16.591 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: if abfrage wird gestarten, um zu fagen ob BillingProcessor ist einmal Kauf Supported
2021-07-16 10:29:16.591 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: Es ist supported
2021-07-16 10:29:16.591 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: wird gekauft
2021-07-16 10:29:16.635 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: wird konsumiert
2021-07-16 10:29:16.635 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: produktId wird gesetzt*
2021-07-16 10:29:16.666 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: MSG_WINDOW_FOCUS_CHANGED 0 1
2021-07-16 10:29:16.666 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@7881cf8[home]
2021-07-16 10:29:16.666 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:29:16.825 23605-23605/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel destroyed: fd=81
2021-07-16 10:29:20.127 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: setWindowStopped(false) old=false
2021-07-16 10:29:20.177 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: MSG_WINDOW_FOCUS_CHANGED 1 1
2021-07-16 10:29:20.177 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@7881cf8[home]
2021-07-16 10:29:20.177 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:29:20.181 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@7881cf8[home]
2021-07-16 10:29:20.181 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:29:20.181 23605-23605/de.klugaug.tiktokfollowerlikes V/InputMethodManager: Starting input: tba=de.klugaug.tiktokfollowerlikes ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
2021-07-16 10:29:20.181 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: startInputInner - Id : 0
2021-07-16 10:29:20.181 23605-23605/de.klugaug.tiktokfollowerlikes I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
2021-07-16 10:29:20.184 23605-23605/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel constructed: fd=81
2021-07-16 10:29:20.724 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: ViewPostIme pointer 0
2021-07-16 10:29:20.784 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: ViewPostIme pointer 1
*2021-07-16 10:29:20.791 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: Button 2 wurde gedrückt
2021-07-16 10:29:20.791 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: if abfrage wird gestarten, um zu fagen ob BillingProcessor ist einmal Kauf Supported
2021-07-16 10:29:20.791 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: Es ist supported
2021-07-16 10:29:20.791 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: wird gekauft
2021-07-16 10:29:20.828 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: wird konsumiert
2021-07-16 10:29:21.545 23605-23605/de.klugaug.tiktokfollowerlikes D/iabv3: Successfully consumed product_fuenfundzwanzig_coins purchase.
2021-07-16 10:29:21.545 23605-23605/de.klugaug.tiktokfollowerlikes D/onBillingIn_Methode: produktId wird gesetzt*
2021-07-16 10:29:21.545 23605-23605/de.klugaug.tiktokfollowerlikes I/Choreographer: Skipped 44 frames!  The application may be doing too much work on its main thread.
2021-07-16 10:29:21.549 23605-23668/de.klugaug.tiktokfollowerlikes I/OpenGLRenderer: Davey! duration=744ms; Flags=0, IntendedVsync=338264706618230, Vsync=338265439951534, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=338265447419665, AnimationStart=338265447423819, PerformTraversalsStart=338265448340319, DrawStart=338265448646319, SyncQueued=338265448766780, SyncStart=338265448830203, IssueDrawCommandsStart=338265448963357, SwapBuffers=338265450432857, FrameCompleted=338265451566280, DequeueBufferDuration=190000, QueueBufferDuration=203000,
2021-07-16 10:29:21.551 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: MSG_WINDOW_FOCUS_CHANGED 0 1
2021-07-16 10:29:21.551 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@7881cf8[home]
2021-07-16 10:29:21.551 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:29:21.556 23605-23605/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel destroyed: fd=81
2021-07-16 10:29:28.988 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: setWindowStopped(false) old=false
2021-07-16 10:29:29.039 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: MSG_WINDOW_FOCUS_CHANGED 1 1
2021-07-16 10:29:29.039 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@7881cf8[home]
2021-07-16 10:29:29.040 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:29:29.043 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@7881cf8[home]
2021-07-16 10:29:29.044 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-16 10:29:29.044 23605-23605/de.klugaug.tiktokfollowerlikes V/InputMethodManager: Starting input: tba=de.klugaug.tiktokfollowerlikes ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
2021-07-16 10:29:29.044 23605-23605/de.klugaug.tiktokfollowerlikes D/InputMethodManager: startInputInner - Id : 0
2021-07-16 10:29:29.044 23605-23605/de.klugaug.tiktokfollowerlikes I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
2021-07-16 10:29:29.048 23605-23605/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel constructed: fd=81
2021-07-16 10:29:32.144 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: ViewPostIme pointer 0
2021-07-16 10:29:32.217 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: ViewPostIme pointer 1
2021-07-16 10:29:33.668 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: ViewPostIme pointer 0
2021-07-16 10:29:33.778 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: ViewPostIme pointer 1
2021-07-16 10:29:34.452 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: ViewPostIme pointer 0
2021-07-16 10:29:34.544 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: ViewPostIme pointer 1
2021-07-16 10:29:35.044 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: ViewPostIme pointer 0
2021-07-16 10:29:35.113 23605-23605/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@f4f3268[home]: ViewPostIme pointer 1
[/CODE]


----------



## wer112 (16. Jul 2021)

Jw456 hat gesagt.:


> Dann schaue dir seinen Code an ich sehe da nur das eine log was du genannt hast.
> 
> Es war eigentlich eine Zustimmung die du nicht verstanden hast.
> Wenn du meinen vorherigen Kommentar liest sollte es klar sein ich wollte auch wissen was Inden error Handler ist.
> ...


1. ja ich habe noch nicht so ein großen Grundwissen wie ihr bzw. andere. da ich das nicht studiere bzw. alles noch am lernen bin und man kann als "Anfänger" noch nicht alles verstehen. Ich lerne ja noch... Und Tipps nehme ich ja an und setze sie um, wenn ich dazu in der lage bin.

2. Ich habe jeden den kneitzel mal den Code voll mit Logcats gepackt um zu sehen, wo der Fehler ist(siehe oben). Ich habe festgestellt, das er erst garnicht in die onPruductPurchase kommt. 

3. Das mit dem Error Handler, habe ich noch nie gemacht und ich habe dazu keinerlei erfahrung. Wenn ich weis wie es geht, dann würde ich das auch machen... Aber der kauf funktioniert(wo warscheinlich kein error wäre)... NAch dem Kauf geht er ja nicht in die Methode, sonst könnte man das ja in den Logcats sehen. Habe extra gleich bei Ankunft in der Methode ein Log stehen, um zu sehen, obs reingeht. Und Wie du es siehst, es geht nicht in die Methode.


----------



## kneitzel (16. Jul 2021)

Ja, wir sind ja auch bereit zu erklären. Nur bitte verstehe, dass es zumindest deprimiert, wenn man als Antwort etwas bekommt, das man als "Nö, mache ich nicht, weil es in dem Video auch nicht notwendig war." ... Das war mein Eindruck, der evtl. auch schlicht falsch war. Bitte entschuldige dann, dass ich über reagiert habe.

a) Besseres Nutzen des Logs:
Du kannst deutlich mehr Dinge ins Log schreiben. Wie man etwas ins log Schreibt, erkennst Du ja am Back-Handler. Ein einfaches Log.x("...", "...") wäre das, wobei x ersetzt wird durch das Level: d: debug, e: error, i: info ... 
Der erste Parameter ist TAG. Das ist oft einfach in einer Klasse eine Konstante, die deklariert wurde und die die Quelle angibt. Das kann z.B. einfach der Klassenname sein. Also als erstes in der Klasse etwas schreiben wie private static final String TAG = "klassenname";
Dann kommt die Log-Meldung. Optional kann als dritter Parameter noch eine Exception mitgegeben werden.

Das kannst Du dann nutzen um Informationen in das Log zu schreiben - das solltest Du dann alles im Logcat finden. Das kann also etwas sein wie:

```
@Override
    public void onProductPurchased(String productId, TransactionDetails details) {
        Log.i(TAG, "onProductPurchased(" + productId + ", " + details + ")");
        // .... Deine restliche Methode
    }
```
(Ich habe mir jetzt die TransactionDetails nicht genau angeschaut. Das mag keine sinnvolle toString Methode haben - in dem Fall sollte man das noch so erweitern, dass da sinnvolle Informationen gegeben werden!)

Und bei den anderen Methoden wäre es dann evtl. sowas:

```
@Override
    public void onPurchaseHistoryRestored() {
        Log.i(TAG, "onPurchaseHistoryRestored called ...");
    }

    @Override
    public void onBillingError(int errorCode, Throwable error) {
        Log.e(TAG, "onBillingError("+ errorCode + ", " + error + ")", error);
    }
```
Das nur als ein Vorschlag. Dann bekommst Du im LogCat wenigstens erst einmal mit, dass es zu einem Fehler gekommen ist. 
Generell sollte man sowas aber auch dem Kunden mitteilen. Also z.B. ein Toast das dem User mitteilt: Zahlung hat nicht geklappt mit folgendem Fehler: ....

Das einfach einmal als konkrete Vorschläge, was man ändern könnte.


----------



## Jw456 (16. Jul 2021)

Eine Frage ist dein log bei Kauf ok oder beim Fehler?


----------



## wer112 (19. Jul 2021)

kneitzel hat gesagt.:


> Ja, wir sind ja auch bereit zu erklären. Nur bitte verstehe, dass es zumindest deprimiert, wenn man als Antwort etwas bekommt, das man als "Nö, mache ich nicht, weil es in dem Video auch nicht notwendig war." ... Das war mein Eindruck, der evtl. auch schlicht falsch war. Bitte entschuldige dann, dass ich über reagiert habe.
> 
> a) Besseres Nutzen des Logs:
> Du kannst deutlich mehr Dinge ins Log schreiben. Wie man etwas ins log Schreibt, erkennst Du ja am Back-Handler. Ein einfaches Log.x("...", "...") wäre das, wobei x ersetzt wird durch das Level: d: debug, e: error, i: info ...
> ...


1. ich habe das mit den Logs gemacht und habe meine Log.d in Log.i verwandelt. Ich habe mir die Logs angesehen, aber es kommt keine Errors.
2. Die App kommt erst garnicht in die onProductPurchase rein. Das erkenne ich ja an den Logs...

Hier der geänderter Code:

[CODE lang="java" title="Veränderter Code"]package ...............;

import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;


import com.anjlab.android.iab.v3.BillingProcessor;
import com.anjlab.android.iab.v3.TransactionDetails;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.EventListener;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.FirebaseFirestoreException;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class fragment_shop  extends Fragment implements BillingProcessor.IBillingHandler  {

    private static  final String TAG ="fragment_shop";

    TextView coinText, neuerShopText;

    private Button btn1, btn2, btn3, btn4, btn5, btn6;




    private BillingProcessor bp;



    FirebaseAuth fAuth;
    FirebaseFirestore fStore;

    String userID;


    private int coins = 0;


    private String produktId = "";






    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    /* --------------------------------- Hier kommt alles rein, was normalerweise in die onCreat Methode kommt -------------------------------- */
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {

        Log.i("create", "Starten onCreateView");

        View fragmentlayout_shop = inflater.inflate(R.layout.shop_layout, null);

        Log.i("create", "Coin Text wird gefunden(findViewByID)");
        coinText = (TextView)fragmentlayout_shop.findViewById(R.id.textView7);
        Log.i("create", "fertig mit Coin Text finden(findViewByID)");

        neuerShopText = (TextView)fragmentlayout_shop.findViewById(R.id.neuerShop);
        neuerShopText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(getActivity(), neuerShop.class));
            }
        });


        Log.i("create", "Laden der LadenCoins() Methode");
        LadenCoins();
        Log.i("create", "fertig mit Laden der Coins Methode");

        Log.i("create", "FirebaseAuth, FrebaseFirestore, UserId wird geladen...");
        fAuth = FirebaseAuth.getInstance();
        fStore = FirebaseFirestore.getInstance();
        userID = fAuth.getCurrentUser().getUid();

        Log.i("create", "Buttons werden gefunden(findViewByID)");
        btn1 = (Button)fragmentlayout_shop.findViewById(R.id.button2);
        btn2 = (Button)fragmentlayout_shop.findViewById(R.id.button3);
        btn3 = (Button)fragmentlayout_shop.findViewById(R.id.button4);
        btn4 = (Button)fragmentlayout_shop.findViewById(R.id.button6);
        btn5 = (Button)fragmentlayout_shop.findViewById(R.id.button7);
        btn6 = (Button)fragmentlayout_shop.findViewById(R.id.button8);
        Log.i("create", "fertig mit den finden der Buttons(findViewByID)");

        Log.i("create", "neuer BillingProcessor wird gemacht und mit der Lizenz aus den Strings...");

        bp = new BillingProcessor(getActivity(), getResources().getString(R.string.play_console_license), fragment_shop.this);

        Log.i("create", "der BillingProcessor wird initialize... (Die Methode wird aufgerufen(onBillingInitialized())");
        bp.initialize();



        return fragmentlayout_shop;
    }





    public void onBackPressed() {
        Log.e("######","Du kommst hier net raus");
    }

    private void LadenCoins() {

        Log.i("ladencoins", "Ankunft Laden Coins");

        Log.i("ladencoins", "FirebaseAuth, FrebaseFirestore, UserId wird geladen...");
        fAuth = FirebaseAuth.getInstance();
        fStore = FirebaseFirestore.getInstance();
        userID = fAuth.getCurrentUser().getUid();
        Log.i("ladencoins", " fertig mit FirebaseAuth, FrebaseFirestore, UserId...");

        Log.i("ladencoins", "Dokument Guthaben wird geladen");
        DocumentReference documentReference = fStore.collection("Guthaben").document(userID);

        documentReference.addSnapshotListener(getActivity(), new EventListener<DocumentSnapshot>() {
            @Override
            public void onEvent(@Nullable DocumentSnapshot value, @Nullable FirebaseFirestoreException error) {
                Log.i("ladencoins", "Coins wird aus der Datenbank in coins geladen");
                Log.i("ladencoins", "Coins wird in die Variable coins geladen...");
                coins = value.getLong("Coins").intValue();
                Log.i("ladencoins", "Coins wurde in die Variable coins geladen...");
                Log.i("ladencoins", "Coins wurden aus der Datenbank  geladen");
                Log.i("ladencoins", "der CoinText wird aktualisiert");
                coinText.setText("" + coins);
                Log.i("ladencoins", "der CoinText wurde aktualisiert");

            }
        });
        Log.i("ladencoins", "fertg mit laden von Guthaben...");



    }


    @Override
    public void onBillingInitialized() {

        Log.i("onBillingIn_Methode", "Ankunft in der onBillingInitialized Methode");


        btn1.setOnClickListener(v ->{
            Log.i("onBillingIn_Methode", "Button 1 wurde gedrückt");
            Log.i("onBillingIn_Methode", "if abfrage wird gestarten, um zu fagen ob BillingProcessor ist einmal Kauf Supported");
            if(bp.isOneTimePurchaseSupported()){
                Log.i("onBillingIn_Methode", "Es ist supported");
                Log.i("onBillingIn_Methode", "wird gekauft");
                bp.purchase(getActivity(), "product_zehn_coins");
                Log.i("onBillingIn_Methode", "wurde gekauft");
                Log.i("onBillingIn_Methode", "wird konsumiert");
                bp.consumePurchase("product_zehn_coins");
                Log.i("onBillingIn_Methode", "wurde konsumiert");
                Log.i("onBillingIn_Methode", "produktId wird gesetzt");
                produktId = "product_zehn_coins";
                Log.i("onBillingIn_Methode", "produktId wurde gesetzt");

            }else{

            }
        });

        btn2.setOnClickListener(v ->{
            Log.i("onBillingIn_Methode", "Button 2 wurde gedrückt");
            Log.i("onBillingIn_Methode", "if abfrage wird gestarten, um zu fagen ob BillingProcessor ist einmal Kauf Supported");
            if(bp.isOneTimePurchaseSupported()){
                Log.i("onBillingIn_Methode", "Es ist supported");
                Log.i("onBillingIn_Methode", "wird gekauft");
                bp.purchase(getActivity(), "product_fuenfundzwanzig_coins");
                Log.i("onBillingIn_Methode", "wurde gekauft");
                Log.i("onBillingIn_Methode", "wird konsumiert");
                bp.consumePurchase("product_fuenfundzwanzig_coins");
                Log.i("onBillingIn_Methode", "wurde konsumiert");
                Log.i("onBillingIn_Methode", "produktId wird gesetzt");
                produktId = "product_fuenfundzwanzig_coins";
                Log.i("onBillingIn_Methode", "produktId wurde gesetzt");

            }else{

            }
        });

        btn3.setOnClickListener(v ->{
            Log.i("onBillingIn_Methode", "Button 3 wurde gedrückt");
            Log.i("onBillingIn_Methode", "if abfrage wird gestarten, um zu fagen ob BillingProcessor ist einmal Kauf Supported");
            if(bp.isOneTimePurchaseSupported()){
                Log.i("onBillingIn_Methode", "Es ist supported");
                Log.i("onBillingIn_Methode", "wird gekauft");
                bp.purchase(getActivity(), "product_fuenfzig_coins");
                Log.i("onBillingIn_Methode", "wurde gekauft");
                Log.i("onBillingIn_Methode", "wird konsumiert");
                bp.consumePurchase("product_fuenfzig_coins");
                Log.i("onBillingIn_Methode", "wurde konsumiert");
                Log.i("onBillingIn_Methode", "produktId wird gesetzt");
                produktId = "product_fuenfzig_coins";
                Log.i("onBillingIn_Methode", "produktId wurde gesetzt");

            }else{

            }
        });

        btn4.setOnClickListener(v ->{
            Log.i("onBillingIn_Methode", "Button 4 wurde gedrückt");
            Log.i("onBillingIn_Methode", "if abfrage wird gestarten, um zu fagen ob BillingProcessor ist einmal Kauf Supported");
            if(bp.isOneTimePurchaseSupported()){
                Log.i("onBillingIn_Methode", "Es ist supported");
                Log.i("onBillingIn_Methode", "wird gekauft");
                bp.purchase(getActivity(), "product_einhundert_coins");
                Log.i("onBillingIn_Methode", "wurde gekauft");
                Log.i("onBillingIn_Methode", "wird konsumiert");
                bp.consumePurchase("product_einhundert_coins");
                Log.i("onBillingIn_Methode", "wurde konsumiert");
                Log.i("onBillingIn_Methode", "produktId wird gesetzt");
                produktId = "product_einhundert_coins";
                Log.i("onBillingIn_Methode", "produktId wurde gesetzt");

            }else{

            }
        });

        btn5.setOnClickListener(v ->{
            Log.i("onBillingIn_Methode", "Button 5 wurde gedrückt");
            Log.i("onBillingIn_Methode", "if abfrage wird gestarten, um zu fagen ob BillingProcessor ist einmal Kauf Supported");
            if(bp.isOneTimePurchaseSupported()){
                Log.i("onBillingIn_Methode", "Es ist supported");
                Log.i("onBillingIn_Methode", "wird gekauft");
                bp.purchase(getActivity(), "product_eintausend_coins");
                Log.i("onBillingIn_Methode", "wurde gekauft");
                Log.i("onBillingIn_Methode", "wird konsumiert");
                bp.consumePurchase("product_eintausend_coins");
                Log.i("onBillingIn_Methode", "wurde konsumiert");
                Log.i("onBillingIn_Methode", "produktId wird gesetzt");
                produktId = "product_eintausend_coins";
                Log.i("onBillingIn_Methode", "produktId wurde gesetzt");

            }else{

            }
        });

        btn6.setOnClickListener(v ->{
            Log.i("onBillingIn_Methode", "Button 6 wurde gedrückt");
            Log.i("onBillingIn_Methode", "if abfrage wird gestarten, um zu fagen ob BillingProcessor ist einmal Kauf Supported");
            if(bp.isOneTimePurchaseSupported()){
                Log.i("onBillingIn_Methode", "Es ist supported");
                Log.i("onBillingIn_Methode", "wird gekauft");
                bp.purchase(getActivity(), "product_fuenftausend_coins");
                Log.i("onBillingIn_Methode", "wurde gekauft");
                Log.i("onBillingIn_Methode", "wird konsumiert");
                bp.consumePurchase("product_fuenftausend_coins");
                Log.i("onBillingIn_Methode", "wurde konsumiert");
                Log.i("onBillingIn_Methode", "produktId wird gesetzt");
                produktId = "product_fuenftausend_coins";
                Log.i("onBillingIn_Methode", "produktId wurde gesetzt");

            }else{

            }
        });

        Log.i("onBillingIn_Methode", "fertig mit der onBilling Methode...");

    }


    @Override
    public void onProductPurchased(String productId, TransactionDetails details) {

        Log.i(TAG, "onProductPurchased(" + productId + ", " + details + ")");

        Log.i("onProductPurchased", "Ankunft in der onProductPurchased Methode");

        if (produktId == "product_zehn_coins"){
            Log.i("onProductPurchased", "Abfrage, ob produktId gleich" + produktId + " ist");
            Log.i("onProductPurchased", "Coins wird gesetzt");
            coins += 10;

            Log.i("onProductPurchased", "Coins werden in der Datenbank gepeichert");
            fAuth = FirebaseAuth.getInstance();
            fStore = FirebaseFirestore.getInstance();
            userID = fAuth.getCurrentUser().getUid();

            DocumentReference documentReference = fStore.collection("Guthaben").document(userID);
            Map<String, Object> user_guthaben = new HashMap<>();
            user_guthaben.put("Coins", coins);
            documentReference.set(user_guthaben);

            Log.i("onProductPurchased", "Coins Text wird aktualisiert");
            coinText.setText(coins + " Coins");

        }
        Log.i("onProductPurchased", "Abfrage, ob produktId gleich" + produktId + " ist");
        if (produktId == "product_fuenfundzwanzig_coins"){
            Log.i("onProductPurchased", "Abfrage, ob produktId gleich" + produktId + " ist");
            Log.i("onProductPurchased", "Coins wird gesetzt");
            coins += 25;

            Log.i("onProductPurchased", "Coins werden in der Datenbank gepeichert");
            fAuth = FirebaseAuth.getInstance();
            fStore = FirebaseFirestore.getInstance();
            userID = fAuth.getCurrentUser().getUid();

            DocumentReference documentReference = fStore.collection("Guthaben").document(userID);
            Map<String, Object> user_guthaben = new HashMap<>();
            user_guthaben.put("Coins", coins);
            documentReference.set(user_guthaben);

            Log.i("onProductPurchased", "Coins Text wird aktualisiert");
            coinText.setText(coins + " Coins");

        }

        if (produktId == "product_fuenfzig_coins"){
            Log.i("onProductPurchased", "Abfrage, ob produktId gleich" + produktId + " ist");
            Log.i("onProductPurchased", "Coins wird gesetzt");
            coins += 50;

            Log.i("onProductPurchased", "Coins werden in der Datenbank gepeichert");
            fAuth = FirebaseAuth.getInstance();
            fStore = FirebaseFirestore.getInstance();
            userID = fAuth.getCurrentUser().getUid();

            DocumentReference documentReference = fStore.collection("Guthaben").document(userID);
            Map<String, Object> user_guthaben = new HashMap<>();
            user_guthaben.put("Coins", coins);
            documentReference.set(user_guthaben);

            Log.i("onProductPurchased", "Coins Text wird aktualisiert");
            coinText.setText(coins + " Coins");

        }

        if (produktId == "product_einhundert_coins"){

            Log.i("onProductPurchased", "Abfrage, ob produktId gleich" + produktId + " ist");
            Log.i("onProductPurchased", "Coins wird gesetzt");
            coins += 100;

            Log.i("onProductPurchased", "Coins werden in der Datenbank gepeichert");
            fAuth = FirebaseAuth.getInstance();
            fStore = FirebaseFirestore.getInstance();
            userID = fAuth.getCurrentUser().getUid();

            DocumentReference documentReference = fStore.collection("Guthaben").document(userID);
            Map<String, Object> user_guthaben = new HashMap<>();
            user_guthaben.put("Coins", coins);
            documentReference.set(user_guthaben);

            Log.i("onProductPurchased", "Coins Text wird aktualisiert");
            coinText.setText(coins + " Coins");

        }

        if (produktId == "product_eintausend_coins"){
            Log.i("onProductPurchased", "Abfrage, ob produktId gleich" + produktId + " ist");
            Log.i("onProductPurchased", "Coins wird gesetzt");
            coins += 1000;

            Log.i("onProductPurchased", "Coins werden in der Datenbank gepeichert");
            fAuth = FirebaseAuth.getInstance();
            fStore = FirebaseFirestore.getInstance();
            userID = fAuth.getCurrentUser().getUid();

            DocumentReference documentReference = fStore.collection("Guthaben").document(userID);
            Map<String, Object> user_guthaben = new HashMap<>();
            user_guthaben.put("Coins", coins);
            documentReference.set(user_guthaben);

            Log.i("onProductPurchased", "Coins Text wird aktualisiert");
            coinText.setText(coins + " Coins");

        }

        if (produktId == "product_fuenftausend_coins"){
            Log.i("onProductPurchased", "Abfrage, ob produktId gleich" + produktId + " ist");
            Log.i("onProductPurchased", "Coins wird gesetzt");
            coins += 5000;

            Log.i("onProductPurchased", "Coins werden in der Datenbank gepeichert");
            fAuth = FirebaseAuth.getInstance();
            fStore = FirebaseFirestore.getInstance();
            userID = fAuth.getCurrentUser().getUid();

            DocumentReference documentReference = fStore.collection("Guthaben").document(userID);
            Map<String, Object> user_guthaben = new HashMap<>();
            user_guthaben.put("Coins", coins);
            documentReference.set(user_guthaben);

            Log.i("onProductPurchased", "Coins Text wird aktualisiert");
            coinText.setText(coins + " Coins");



        }



    }

    @Override
    public void onPurchaseHistoryRestored() {

        Log.i(TAG, "onPurchaseHistoryRestored called ....");

    }

    @Override
    public void onBillingError(int errorCode, Throwable error) {

        Log.e(TAG, "on-billingError(" + errorCode + ", " + error + ")", error);


    }


}








[/CODE]


Und das ist der Log, wenn ich ein Product kaufe:

[CODE lang="java" title="Logcat, mit Kauf..."]2021-07-19 11:22:00.735 363-363/de.klugaug.tiktokfollowerlikes I/create: Starten onCreateView
2021-07-19 11:22:00.879 363-363/de.klugaug.tiktokfollowerlikes I/create: Coin Text wird gefunden(findViewByID)
2021-07-19 11:22:00.880 363-363/de.klugaug.tiktokfollowerlikes I/create: fertig mit Coin Text finden(findViewByID)
2021-07-19 11:22:00.881 363-363/de.klugaug.tiktokfollowerlikes I/create: Laden der LadenCoins() Methode
2021-07-19 11:22:00.881 363-363/de.klugaug.tiktokfollowerlikes I/ladencoins: Ankunft Laden Coins
2021-07-19 11:22:00.881 363-363/de.klugaug.tiktokfollowerlikes I/ladencoins: FirebaseAuth, FrebaseFirestore, UserId wird geladen...
2021-07-19 11:22:00.881 363-363/de.klugaug.tiktokfollowerlikes I/ladencoins:  fertig mit FirebaseAuth, FrebaseFirestore, UserId...
2021-07-19 11:22:00.881 363-363/de.klugaug.tiktokfollowerlikes I/ladencoins: Dokument Guthaben wird geladen
2021-07-19 11:22:00.882 363-363/de.klugaug.tiktokfollowerlikes I/ladencoins: fertg mit laden von Guthaben...
2021-07-19 11:22:00.883 363-363/de.klugaug.tiktokfollowerlikes I/create: fertig mit Laden der Coins Methode
2021-07-19 11:22:00.883 363-363/de.klugaug.tiktokfollowerlikes I/create: FirebaseAuth, FrebaseFirestore, UserId wird geladen...
2021-07-19 11:22:00.883 363-363/de.klugaug.tiktokfollowerlikes I/create: Buttons werden gefunden(findViewByID)
2021-07-19 11:22:00.883 363-363/de.klugaug.tiktokfollowerlikes I/create: fertig mit den finden der Buttons(findViewByID)
2021-07-19 11:22:00.883 363-363/de.klugaug.tiktokfollowerlikes I/create: neuer BillingProcessor wird gemacht und mit der Lizenz aus den Strings...
2021-07-19 11:22:00.909 363-363/de.klugaug.tiktokfollowerlikes I/create: der BillingProcessor wird initialize... (Die Methode wird aufgerufen(onBillingInitialized())
2021-07-19 11:22:00.979 363-363/de.klugaug.tiktokfollowerlikes I/ladencoins: Coins wird aus der Datenbank in coins geladen
2021-07-19 11:22:00.979 363-363/de.klugaug.tiktokfollowerlikes I/ladencoins: Coins wird in die Variable coins geladen...
2021-07-19 11:22:00.979 363-363/de.klugaug.tiktokfollowerlikes I/ladencoins: Coins wurde in die Variable coins geladen...
2021-07-19 11:22:00.979 363-363/de.klugaug.tiktokfollowerlikes I/ladencoins: Coins wurden aus der Datenbank  geladen
2021-07-19 11:22:00.979 363-363/de.klugaug.tiktokfollowerlikes I/ladencoins: der CoinText wird aktualisiert
2021-07-19 11:22:00.980 363-363/de.klugaug.tiktokfollowerlikes I/ladencoins: der CoinText wurde aktualisiert
2021-07-19 11:22:00.993 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: Ankunft in der onBillingInitialized Methode
2021-07-19 11:22:00.994 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: fertig mit der onBilling Methode...
2021-07-19 11:22:01.161 363-363/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@191703[home]: Relayout returned: old=[0,0][1080,2220] new=[0,0][1080,2220] result=0x1 surface={valid=true 501256613888} changed=false
2021-07-19 11:22:05.987 363-363/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@191703[home]: ViewPostIme pointer 0
2021-07-19 11:22:06.044 363-363/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@191703[home]: ViewPostIme pointer 1
2021-07-19 11:22:06.057 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: Button 1 wurde gedrückt
2021-07-19 11:22:06.057 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: if abfrage wird gestarten, um zu fagen ob BillingProcessor ist einmal Kauf Supported
2021-07-19 11:22:06.062 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: Es ist supported
2021-07-19 11:22:06.062 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: wird gekauft
2021-07-19 11:22:06.100 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: wurde gekauft
2021-07-19 11:22:06.100 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: wird konsumiert
2021-07-19 11:22:06.100 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: wurde konsumiert
2021-07-19 11:22:06.101 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: produktId wird gesetzt
2021-07-19 11:22:06.101 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: produktId wurde gesetzt
2021-07-19 11:22:06.124 363-363/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@191703[home]: MSG_WINDOW_FOCUS_CHANGED 0 1
2021-07-19 11:22:06.124 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@6fabc5b[home]
2021-07-19 11:22:06.124 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-19 11:22:06.283 363-363/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel destroyed: fd=115
2021-07-19 11:22:08.300 363-363/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@191703[home]: setWindowStopped(false) old=false
2021-07-19 11:22:08.349 363-363/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@191703[home]: MSG_WINDOW_FOCUS_CHANGED 1 1
2021-07-19 11:22:08.349 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@6fabc5b[home]
2021-07-19 11:22:08.350 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-19 11:22:08.356 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@6fabc5b[home]
2021-07-19 11:22:08.356 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-19 11:22:08.356 363-363/de.klugaug.tiktokfollowerlikes V/InputMethodManager: Starting input: tba=de.klugaug.tiktokfollowerlikes ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
2021-07-19 11:22:08.356 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: startInputInner - Id : 0
2021-07-19 11:22:08.356 363-363/de.klugaug.tiktokfollowerlikes I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
2021-07-19 11:22:08.362 363-363/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel constructed: fd=81
2021-07-19 11:22:10.197 363-363/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@191703[home]: ViewPostIme pointer 0
2021-07-19 11:22:10.275 363-363/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@191703[home]: ViewPostIme pointer 1
2021-07-19 11:22:10.289 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: Button 3 wurde gedrückt
2021-07-19 11:22:10.289 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: if abfrage wird gestarten, um zu fagen ob BillingProcessor ist einmal Kauf Supported
2021-07-19 11:22:10.289 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: Es ist supported
2021-07-19 11:22:10.289 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: wird gekauft
2021-07-19 11:22:10.330 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: wurde gekauft
2021-07-19 11:22:10.330 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: wird konsumiert
2021-07-19 11:22:10.330 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: wurde konsumiert
2021-07-19 11:22:10.330 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: produktId wird gesetzt
2021-07-19 11:22:10.330 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: produktId wurde gesetzt
2021-07-19 11:22:10.352 363-363/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@191703[home]: MSG_WINDOW_FOCUS_CHANGED 0 1
2021-07-19 11:22:10.352 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@6fabc5b[home]
2021-07-19 11:22:10.352 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-19 11:22:10.500 363-363/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel destroyed: fd=81
2021-07-19 11:22:12.634 363-363/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@191703[home]: setWindowStopped(false) old=false
2021-07-19 11:22:12.683 363-363/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@191703[home]: MSG_WINDOW_FOCUS_CHANGED 1 1
2021-07-19 11:22:12.683 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@6fabc5b[home]
2021-07-19 11:22:12.684 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-19 11:22:12.689 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@6fabc5b[home]
2021-07-19 11:22:12.689 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-19 11:22:12.689 363-363/de.klugaug.tiktokfollowerlikes V/InputMethodManager: Starting input: tba=de.klugaug.tiktokfollowerlikes ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
2021-07-19 11:22:12.689 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: startInputInner - Id : 0
2021-07-19 11:22:12.689 363-363/de.klugaug.tiktokfollowerlikes I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
2021-07-19 11:22:12.692 363-363/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel constructed: fd=81
2021-07-19 11:22:13.254 363-363/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@191703[home]: ViewPostIme pointer 0
2021-07-19 11:22:13.338 363-363/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@191703[home]: ViewPostIme pointer 1
2021-07-19 11:22:13.345 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: Button 6 wurde gedrückt
2021-07-19 11:22:13.346 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: if abfrage wird gestarten, um zu fagen ob BillingProcessor ist einmal Kauf Supported
2021-07-19 11:22:13.346 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: Es ist supported
2021-07-19 11:22:13.346 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: wird gekauft
2021-07-19 11:22:13.374 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: wurde gekauft
2021-07-19 11:22:13.374 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: wird konsumiert
2021-07-19 11:22:14.553 363-363/de.klugaug.tiktokfollowerlikes D/iabv3: Successfully consumed product_fuenftausend_coins purchase.
2021-07-19 11:22:14.553 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: wurde konsumiert
2021-07-19 11:22:14.553 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: produktId wird gesetzt
2021-07-19 11:22:14.553 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: produktId wurde gesetzt
2021-07-19 11:22:14.554 363-363/de.klugaug.tiktokfollowerlikes I/Choreographer: Skipped 71 frames!  The application may be doing too much work on its main thread.
2021-07-19 11:22:14.571 363-397/de.klugaug.tiktokfollowerlikes I/OpenGLRenderer: Davey! duration=1212ms; Flags=0, IntendedVsync=472556696451779, Vsync=472557879785065, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=472557892277458, AnimationStart=472557892288112, PerformTraversalsStart=472557894406958, DrawStart=472557895400842, SyncQueued=472557895577765, SyncStart=472557895680073, IssueDrawCommandsStart=472557896324958, SwapBuffers=472557906138265, FrameCompleted=472557909078958, DequeueBufferDuration=567000, QueueBufferDuration=626000,
2021-07-19 11:22:14.575 363-363/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@191703[home]: MSG_WINDOW_FOCUS_CHANGED 0 1
2021-07-19 11:22:14.575 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@6fabc5b[home]
2021-07-19 11:22:14.576 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-19 11:22:14.600 363-363/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel destroyed: fd=81
2021-07-19 11:22:16.668 363-363/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@191703[home]: setWindowStopped(false) old=false
2021-07-19 11:22:16.713 363-363/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@191703[home]: MSG_WINDOW_FOCUS_CHANGED 1 1
2021-07-19 11:22:16.714 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@6fabc5b[home]
2021-07-19 11:22:16.714 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-19 11:22:16.723 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@6fabc5b[home]
2021-07-19 11:22:16.723 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-19 11:22:16.723 363-363/de.klugaug.tiktokfollowerlikes V/InputMethodManager: Starting input: tba=de.klugaug.tiktokfollowerlikes ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
2021-07-19 11:22:16.724 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: startInputInner - Id : 0
2021-07-19 11:22:16.724 363-363/de.klugaug.tiktokfollowerlikes I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
2021-07-19 11:22:16.728 363-363/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel constructed: fd=81
2021-07-19 11:22:18.128 363-363/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@191703[home]: ViewPostIme pointer 0
2021-07-19 11:22:18.203 363-363/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@191703[home]: ViewPostIme pointer 1
2021-07-19 11:22:18.216 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: Button 4 wurde gedrückt
2021-07-19 11:22:18.217 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: if abfrage wird gestarten, um zu fagen ob BillingProcessor ist einmal Kauf Supported
2021-07-19 11:22:18.217 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: Es ist supported
2021-07-19 11:22:18.217 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: wird gekauft
2021-07-19 11:22:18.257 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: wurde gekauft
2021-07-19 11:22:18.257 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: wird konsumiert
2021-07-19 11:22:18.257 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: wurde konsumiert
2021-07-19 11:22:18.257 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: produktId wird gesetzt
2021-07-19 11:22:18.257 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: produktId wurde gesetzt
2021-07-19 11:22:18.279 363-363/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@191703[home]: MSG_WINDOW_FOCUS_CHANGED 0 1
2021-07-19 11:22:18.279 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@6fabc5b[home]
2021-07-19 11:22:18.279 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-19 11:22:18.416 363-363/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel destroyed: fd=81
2021-07-19 11:22:27.203 363-363/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@191703[home]: setWindowStopped(false) old=false
2021-07-19 11:22:27.249 363-363/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@191703[home]: MSG_WINDOW_FOCUS_CHANGED 1 1
2021-07-19 11:22:27.249 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@6fabc5b[home]
2021-07-19 11:22:27.249 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-19 11:22:27.254 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@6fabc5b[home]
2021-07-19 11:22:27.254 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-19 11:22:27.254 363-363/de.klugaug.tiktokfollowerlikes V/InputMethodManager: Starting input: tba=de.klugaug.tiktokfollowerlikes ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
2021-07-19 11:22:27.255 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: startInputInner - Id : 0
2021-07-19 11:22:27.255 363-363/de.klugaug.tiktokfollowerlikes I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
2021-07-19 11:22:27.260 363-363/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel constructed: fd=81
2021-07-19 11:22:31.051 363-363/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@191703[home]: ViewPostIme pointer 0
2021-07-19 11:22:31.107 363-363/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@191703[home]: ViewPostIme pointer 1
2021-07-19 11:22:31.124 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: Button 4 wurde gedrückt
2021-07-19 11:22:31.124 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: if abfrage wird gestarten, um zu fagen ob BillingProcessor ist einmal Kauf Supported
2021-07-19 11:22:31.124 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: Es ist supported
2021-07-19 11:22:31.124 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: wird gekauft
2021-07-19 11:22:31.166 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: wurde gekauft
2021-07-19 11:22:31.166 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: wird konsumiert
2021-07-19 11:22:31.166 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: wurde konsumiert
2021-07-19 11:22:31.166 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: produktId wird gesetzt
2021-07-19 11:22:31.166 363-363/de.klugaug.tiktokfollowerlikes I/onBillingIn_Methode: produktId wurde gesetzt
2021-07-19 11:22:31.197 363-363/de.klugaug.tiktokfollowerlikes D/ViewRootImpl@191703[home]: MSG_WINDOW_FOCUS_CHANGED 0 1
2021-07-19 11:22:31.197 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: prepareNavigationBarInfo() DecorView@6fabc5b[home]
2021-07-19 11:22:31.197 363-363/de.klugaug.tiktokfollowerlikes D/InputMethodManager: getNavigationBarColor() -855310
2021-07-19 11:22:31.364 363-363/de.klugaug.tiktokfollowerlikes D/InputTransport: Input channel destroyed: fd=81
[/CODE]


Wo liegt den der Fehler? Liegt es an der App oder an Google??
Was kann ich tun?


----------



## Jw456 (19. Jul 2021)

Richtig du kommst nicht in eine der listener Methoden. 
Scheinst in einer der Google Methoden hängen zu bleiben.
Tb an log zeile 36 kommst du Methoden wo wir keinen Code haben ob das nun deine sind oder von Google kann Ich nicht sagen.
Tipp logg aussagen wie wurde konsumiert irreführend denn an der Stelle weist du noch nicht ob es geklappt hat.

Frage wie Test du es? 
Hast du die apk bei Google Play hochgeladen? Und auch aus dem Store
Auf  deinem Handy oder Emulator geladen und diese getestet. Nur diese Apk wird ein kauf möglich machen.  Eine apk die im Studio erstellst und aufs Handy übertragen wurde wird nicht mit Google arbeiten.


----------



## wer112 (19. Jul 2021)

Jw456 hat gesagt.:


> Richtig du kommst nicht in eine der listener Methoden.
> Scheinst in einer der Google Methoden hängen zu bleiben.
> Tb an log zeile 36 kommst du Methoden wo wir keinen Code haben ob das nun deine sind oder von Google kann Ich nicht sagen.
> Tipp logg aussagen wie wurde konsumiert irreführend denn an der Stelle weist du noch nicht ob es geklappt hat.
> ...


Ich habe die als internen Test bei Google Play hochgeladen, sonst könnte ich die App ja nicht testen. Was muss ich tun, damit es nicht hängen bleibt?

Log Zeile 83 das sorgt dafür, das es verbraucht wird und man wieder kaufen kann, leider funktioniert es bei  dieser sehr sehr selten...
Nur bei Log 83 wird es konsumiert. 
Die App bleibt stehen nach dem Bezahlen. Error zeigt es nicht an, sowie kommt nicht in die onProductPurchases.

Was kann ich denn tun?


----------



## mrBrown (19. Jul 2021)

Erstmal, unabhängig von deinem Problem: Der Code ist grausam. Wenn sich irgendwo sowas findet: `produktId == "product_zehn_coins"`, sollte man noch mal 10 Schritte zurück gehen und noch nichts mit Android machen.


Zu deinem Problem: Step mal mit einem Debugger durch, u.U. findest du damit das Problem bzw kannst es eingrenzen.


----------



## wer112 (19. Jul 2021)

mrBrown hat gesagt.:


> Erstmal, unabhängig von deinem Problem: Der Code ist grausam. Wenn sich irgendwo sowas findet: `produktId == "product_zehn_coins"`, sollte man noch mal 10 Schritte zurück gehen und noch nichts mit Android machen.
> 
> 
> Zu deinem Problem: Step mal mit einem Debugger durch, u.U. findest du damit das Problem bzw kannst es eingrenzen.


Wie meinst du das? Ich habe ja jetzt sehr viele Logs und habe es ja gesehen, das die App nicht in die onProductPurchase Methode kommt. Sogar das Konsumieren läuft eigentlich garnicht, außer bei Log 83. Die Demo App läuft ja perfekt und fehlerfrei und da habe ich viel weniger Code. 

Wenn die App in die onProductPurchase Methode kommt, könnte ich mal probieren: if(productId.equlas(produktId) zu machen.
Aber dafür müsste es erstmal "weiter" kommen.


----------



## Jw456 (19. Jul 2021)

Ist deine Demo App auch bei Google play?

Ich habe keinen Android Developer Account kann dir nicht helfen.

Wie ich schon mal sagte suche reines echtes android forum. 

Und dort die Entwickler Seite.


----------



## wer112 (19. Jul 2021)

Jw456 hat gesagt.:


> Ist deine Demo App auch bei Google play?
> 
> Ich habe keinen Android Developer Account kann dir nicht helfen.
> 
> ...


1. Ja die Demo App ist  auch bei Google Play(funktioniert perfekt!)
2. Für was brauchst du dafür ein Entwickler Account?
3. Ich denke, ich bin hier besser aufgehoben, da es ja um Java geht und da sind mehr Experten da.


----------



## Jw456 (19. Jul 2021)

Um eine App bei Google play hoch zuladen brauchst du einen Entwickler Account der ca 25  Euro kostet und wenn du Geld verdienen willst wie du ja willst auch ein Gewerbe. Ohne wird es sicher nicht gehen.
Ganzgeich ob dein Code ok ist oder nicht.

Zu drittens ja java die meisten hier arbeiten mit Java für Desktop nicht
android


Dein Problem ist sehr android spezifisch und da bist Du in einem android forum besser aufgehoben.


----------



## kneitzel (19. Jul 2021)

wer112 hat gesagt.:


> 2. Für was brauchst du dafür ein Entwickler Account?


Die Frage verstehe ich nicht. In App Käufe sind ja hier beschrieben:








						In-app products | Google Play Console
					

Grow your revenue by selling products within your app using Google Play Billing




					developer.android.com
				






> How to do it:​
> Determine what content or features you want to sell as digital goods.
> Set-up a Google Wallet Merchant Account in the Google Play Console.
> Define your in-app products in the Play Console, choosing between durables (once purchased, always available to the user) and consumables (items used a limited number of times or for a set period of time).
> Add mechanisms to unlock features or deliver content to your app.


----------



## wer112 (19. Jul 2021)

kneitzel hat gesagt.:


> Die Frage verstehe ich nicht. In App Käufe sind ja hier beschrieben:
> 
> 
> 
> ...


Was hat das jetzt mit mein Problem zu tun? Es kommt ja laut den Logs erstgarnicht in die onProductPurchase rein. Ich habe das mit den Logs gemacht, wie du es gesagt hast, aber es erscheint ja keine Errors... 
Haben Sie mal die Logs angeschaut, die ich Heute reingestellt hatte?


----------



## wer112 (19. Jul 2021)

Jw456 hat gesagt.:


> Um eine App bei Google play hoch zuladen brauchst du einen Entwickler Account der ca 25  Euro kostet und wenn du Geld verdienen willst wie du ja willst auch ein Gewerbe. Ohne wird es sicher nicht gehen.
> Ganzgeich ob dein Code ok ist oder nicht.
> 
> Zu drittens ja java die meisten hier arbeiten mit Java für Desktop nicht
> ...


1. Ich habe ja schon lange ein Entwicklerkonto(ca. Januar 2021) 
2. Deswegen gibt es hier den Bereich Android...
3. Wenn du mir deine Email Adresse gibst, dann kann ich dich als Tester hinterlegen und du könntest die Demo App testen....

Aber ich habe dann trotzdem hier das Problem mit der App.

Wie kann ich das beheben?


----------



## kneitzel (19. Jul 2021)

wer112 hat gesagt.:


> Was hat das jetzt mit mein Problem zu tun?


Wie glaubst Du, dass es funktionieren könnte? Du willst offensichtlich eine Library nutzen: https://github.com/anjlab/android-inapp-billing-v3

Und da steht dann auch direkt:


> Create instance of BillingProcessor class and implement callback in your Activity source code. Constructor will take 3 parameters:
> *Context*
> *Your License Key from Google Developer console.* This will be used to verify purchase signatures. You can pass NULL if you would like to skip this check (_You can find your key in Google Play Console -> Your App Name -> Services & APIs_)
> *IBillingHandler Interface implementation to handle purchase results and errors* (see below)


Was bitte hast Du als License Key angegeben? Was steckt in R.string.play_console_license? Denn den String übergibst Du ja. Und wenn Du keinen Google Account hast, dann wirst Du da nichts sinnvolles / gültiges haben denke ich mal ...


----------



## wer112 (19. Jul 2021)

kneitzel hat gesagt.:


> Wie glaubst Du, dass es funktionieren könnte? Du willst offensichtlich eine Library nutzen: https://github.com/anjlab/android-inapp-billing-v3
> 
> Und da steht dann auch direkt:
> 
> Was bitte hast Du als License Key angegeben? Was steckt in R.string.play_console_license? Denn den String übergibst Du ja. Und wenn Du keinen Google Account hast, dann wirst Du da nichts sinnvolles / gültiges haben denke ich mal ...


Wie offt den noch? Ich habe doch gerade geschrieben, dass ich ein Entwickler Account seit Januar habe. Wenn ich in der Console auf die App gehe und dann auf Montarisieren, dann befindet sich dort für die App ein persöhnlicher Lizenzschlüssel. Bei der Demo App hat der Schlüssel von dessen auch funktioniert. 

So sieht das bei der Demo App aus, sowie bei der jetzigen App. Ich nehme den richtigen Schlüssel. Würde der Schlüssel ja nicht stimmen, dann könnte ich ja nixs kaufen.


Du siehst, das der kauf in dieser jetzigen App ansicht funktioniert, aber laut Log kommt es nicht in die "Gutschreib Methode" rein...

Kannst du irgendwas in den Logs erkennen, wiso es nicht weiter geht?


----------



## kneitzel (19. Jul 2021)

wer112 hat gesagt.:


> Wie offt den noch?


Sorry, aber Du hast angefangen zu fragen, wozu man denn einen Google Entwickler Account brauch ... Und nein. ich schreibe so Dinge incl. Informationen aus Webseiten für Dich kopieren nicht in 1 Minute (Und das ist der Zeitraum zwischen Deinem Post und meinem - davin unabhängigen - Post.

Und ja: Auch ich kann mir sehr wohl besseres vorstellen als eben genau diese Diskussion.



wer112 hat gesagt.:


> Würde der Schlüssel ja nicht stimmen, dann könnte ich ja nixs kaufen.


Und das ist doch auch das Problem. Daher ist es gut, dass Du noch einmal geprüft hast, dass dies auch wirklich richtig ist.


----------



## mrBrown (19. Jul 2021)

Wie schon gesagt: nimm den Debugger.

purchase (und gibt auch consumePurchase?) geben auch was zurück, das solltest du eher nicht ignorieren.


----------



## wer112 (19. Jul 2021)

kneitzel hat gesagt.:


> Sorry, aber Du hast angefangen zu fragen, wozu man denn einen Google Entwickler Account brauch ... Und nein. ich schreibe so Dinge incl. Informationen aus Webseiten für Dich kopieren nicht in 1 Minute (Und das ist der Zeitraum zwischen Deinem Post und meinem - davin unabhängigen - Post.
> 
> Und ja: Auch ich kann mir sehr wohl besseres vorstellen als eben genau diese Diskussion.
> 
> ...


Du hast mich etwas falsch verstanden. Der Jw454 hat folgendes gesagt:


Jw456 hat gesagt.:


> Ich habe keinen Android Developer Account kann dir nicht helfen.


Und darum habe ich ja gesagt, warum braucht Er ein Entwickler Konto, um mir zu helfen...

Es wäre schön, wenn ich mit eure Hilfe es zum laufen bringen zu können. Ich kann ja nicht alle Apps meinen Programmierer damit beauftragen, die In App Käufe für mich zu machen... Ich will ja nicht bei jedem Problem einfach aufgeben und das dann jedes mal an meinem Programmierer weiter reiche...

Ich werde mal das auf Github(auf Deutsch) mal durchlesen und mal schauen, was ich machen kann. Vielleicht, ist es irgendein Zufall, dass die Demo App einwandfrei funktioniert....


----------



## kneitzel (19. Jul 2021)

Den Debugger würde ich auch empfehlen. 

Wobei die Alternative wäre, auf diese Library zu verzichten. Die sucht seid 7 Monaten einen neuen Maintainer und es gibt auch einige Pull Requests. Google liefert ja eigentlich alles: https://developer.android.com/google/play/billing 
Und so komplex scheint mir das alles nicht zu sein, so dass sich so eine Library lohnen würde. Zumal da irgendwas nicht ganz rund läuft (Es kommt ja z.B. im Log "Successfully consumed ..." - daher ist da evtl. irgendwas nicht so ganz rund...)


----------



## Jw456 (19. Jul 2021)

Saß mit dem Account sollte bedeuten das ich nicht deinen Code hochladen kann und will um es ordentlich testen zu können. Ich brauche so etwas nicht. 

Deine app testen bringt mir nichts da ich dann keine Lizenz von dir hätte um dann in der vom play store geladen und installierten app im Debugger zu testen.


----------



## Jw456 (19. Jul 2021)

HiEigentlich ist es bei Google auch so das es einige Stunden / Tage dauern kann nach dem hochladen bis du testen kannst.

In deinem log suhst du auch das einfach zwischendurch eine log von Google kommt. Mit einer ID die du wahrscheinlich schon einige Zeit vorher geklickt hast. Denn zum Zeitpunkt zeile 83 hast du noch nicht auf product_fuenftausend_coins geklickt. Das ist Button 6 der bis dahin noch nicht geklickt wurde. 

So nun liegt es an dir herauszufinden warum diese Meldung dazwischen kommt.


----------

