Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Exception java.lang.RuntimeException: Unable to create service com.test.homebrew.ServiceFirebase: java.lang.ClassCastException: com.google.android.gms.c.pb cannot be cast to com.google.firebase.auth.n
- android.app.ActivityThread.handleCreateService (ActivityThread.java:2762)
- android.app.ActivityThread.access$1800 (ActivityThread.java:151)
- android.app.ActivityThread$H.handleMessage (ActivityThread.java:1424)
- android.os.Handler.dispatchMessage (Handler.java:110)
- android.os.Looper.loop (Looper.java:193)
- android.app.ActivityThread.main (ActivityThread.java:5323)
- java.lang.reflect.Method.invokeNative (Method.java:)
- java.lang.reflect.Method.invoke (Method.java:515)
- com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:825)
- com.android.internal.os.ZygoteInit.main (ZygoteInit.java:641)
- dalvik.system.NativeStart.main (NativeStart.java:)
- Caused by java.lang.ClassCastException: com.google.android.gms.c.pb cannot be cast to com.google.firebase.auth.n
- com.google.android.gms.c.ah.a (ah.java:)
- com.google.firebase.auth.FirebaseAuth.a (FirebaseAuth.java:)
- com.google.firebase.auth.FirebaseAuth.e (FirebaseAuth.java:)
- com.google.firebase.auth.FirebaseAuth.<init> (FirebaseAuth.java:)
- com.google.firebase.auth.FirebaseAuth.<init> (FirebaseAuth.java:)
- com.google.android.gms.c.ag.<init> (ag.java:)
- com.google.firebase.auth.FirebaseAuth.c (FirebaseAuth.java:)
- com.google.firebase.auth.FirebaseAuth.b (FirebaseAuth.java:)
- com.google.firebase.auth.FirebaseAuth.b (FirebaseAuth.java:)
- com.air.advantage.aaservice.p.onCreate (p.java:)
- com.air.advantage.aaservice.ServiceUart.onCreate (ServiceUart.java:)
- android.app.ActivityThread.handleCreateService (ActivityThread.java:2752)
- android.app.ActivityThread.access$1800 (ActivityThread.java:151)
- android.app.ActivityThread$H.handleMessage (ActivityThread.java:1424)
- android.os.Handler.dispatchMessage (Handler.java:110)
- android.os.Looper.loop (Looper.java:193)
- android.app.ActivityThread.main (ActivityThread.java:5323)
- java.lang.reflect.Method.invokeNative (Method.java:)
- java.lang.reflect.Method.invoke (Method.java:515)
- com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:825)
- com.android.internal.os.ZygoteInit.main (ZygoteInit.java:641)
- dalvik.system.NativeStart.main (NativeStart.java:)
- import android.app.Service;
- import android.content.Intent;
- import android.os.IBinder;
- import android.os.SystemClock;
- import android.support.annotation.NonNull;
- import android.support.annotation.Nullable;
- import android.util.Log;
- import com.google.android.gms.tasks.OnCompleteListener;
- import com.google.android.gms.tasks.Task;
- import com.google.firebase.auth.AuthResult;
- import com.google.firebase.auth.FirebaseAuth;
- import com.google.firebase.auth.FirebaseUser;
- import com.google.firebase.database.DataSnapshot;
- import com.google.firebase.database.DatabaseError;
- import com.google.firebase.database.DatabaseException;
- import com.google.firebase.database.DatabaseReference;
- import com.google.firebase.database.FirebaseDatabase;
- import com.google.firebase.database.Logger;
- import com.google.firebase.database.ServerValue;
- import com.google.firebase.database.ValueEventListener;
- import java.util.Map;
- import java.util.concurrent.atomic.AtomicReference;
- public class ServiceFirebase extends Service {
- public static final AtomicReference<String> uid = new AtomicReference<>("");
- private static final String LOG_TAG = ServiceFirebase.class.getSimpleName();
- private static final String FROM_SERVICE = "fromService";
- private static final String BASE_URL = "https://REMOVED/";
- private static DatabaseReference databaseReference;
- private FirebaseAuth.AuthStateListener mAuthListener;
- private MyValueEventListener valueEventListener;
- private FirebaseAuth mAuth;
- private boolean mRun = true;
- public static synchronized String getPassword() {
- return "test";
- }
- public static synchronized String getUsername() {
- return "bob@address.com";
- }
- @Override
- public void onCreate() {
- super.onCreate();
- Log.d(LOG_TAG, "onCreate");
- try {
- FirebaseDatabase.getInstance().setLogLevel(Logger.Level.DEBUG);
- } catch (DatabaseException e) {
- // This is called multiple times???
- }
- mAuth = FirebaseAuth.getInstance();
- if (mAuthListener != null) {
- mAuth.removeAuthStateListener(mAuthListener);
- }
- mAuthListener = new FirebaseAuth.AuthStateListener() {
- @Override
- public void onAuthStateChanged(@NonNull final FirebaseAuth firebaseAuth) {
- final FirebaseUser user = firebaseAuth.getCurrentUser();
- if (user != null) {
- // User is signed in
- Log.d(LOG_TAG, "onAuthStateChanged:signed_in:" + user.getUid());
- DumpStringToFile.getInstance().queueStringToFile("firebase", "Signed in");
- uid.set(user.getUid());
- removeListeners();
- addListeners();
- } else {
- // User is signed out
- Log.d(LOG_TAG, "onAuthStateChanged:signed_out");
- DumpStringToFile.getInstance().queueStringToFile("firebase", "Signed out");
- uid.set("");
- databaseReference = null;
- login();
- }
- }
- };
- //Always sign out just in case username or passwords have changed
- mAuth.signOut();
- mAuth.addAuthStateListener(mAuthListener);
- mAuth.createUserWithEmailAndPassword(getUsername(), getPassword()).addOnCompleteListener(new com.google.android.gms.tasks.OnCompleteListener<AuthResult>() {
- @Override
- public void onComplete(@NonNull final Task<AuthResult> task) {
- Log.d(LOG_TAG, "createUserWithEmail:onComplete:" + task.isSuccessful());
- // If sign up fails it generally means that the user already exists - we just have to login
- if (!task.isSuccessful()) {
- login();
- }
- }
- });
- }
- private void removeListeners() {
- Log.d(LOG_TAG, "addValueEventListener removed");
- if (valueEventListener != null) {
- final DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReferenceFromUrl(BASE_URL + uid.get());
- databaseReference.child(FROM_SERVICE).removeEventListener(valueEventListener);
- }
- }
- @Override
- public void onDestroy() {
- super.onDestroy();
- if (mAuthListener != null) {
- mAuth.removeAuthStateListener(mAuthListener);
- }
- mRun = false;
- removeListeners();
- }
- @Nullable
- @Override
- public IBinder onBind(final Intent intent) {
- return null;
- }
- @Override
- public int onStartCommand(Intent intent, int flags, int startId) {
- Thread thread = new Thread(new RunnableSendPush());
- thread.start();
- return Service.START_NOT_STICKY;
- }
- private void addListeners() {
- Log.d(LOG_TAG, "addValueEventListener added");
- if (valueEventListener == null) {
- valueEventListener = new MyValueEventListener();
- }
- if (databaseReference != null) {
- databaseReference.child(FROM_SERVICE).addValueEventListener(valueEventListener);
- }
- }
- private void login() {
- mAuth.signInWithEmailAndPassword(getUsername(), getPassword()).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
- @Override
- public void onComplete(@NonNull final Task<AuthResult> task) {
- Log.d(LOG_TAG, "signInWithEmailAndPassword:onComplete:" + task.isSuccessful());
- DumpStringToFile.getInstance().queueStringToFile("firebase", "Login in - " + task.isSuccessful());
- if (task.isSuccessful()) {
- databaseReference = FirebaseDatabase.getInstance().getReferenceFromUrl(BASE_URL + uid.get() + "/" + FROM_SERVICE);
- // FirebaseUser user = mAuth.getCurrentUser(); // mAuth is your current firebase auth instanceuser.getToken(true);
- // user.getToken(true).addOnCompleteListener(new OnCompleteListener<GetTokenResult>() {
- // @Override
- // public void onComplete(@NonNull Task<GetTokenResult> task) {
- // if (task.isSuccessful()) {
- // Log.d(LOG_TAG, "token=" + task.getResult().getToken());
- // } else {
- // Log.e(LOG_TAG, "exception=" + task.getException().toString());
- // }
- // }
- // });
- }
- }
- });
- }
- private static class MyValueEventListener implements ValueEventListener {
- @Override
- public void onDataChange(final DataSnapshot dataSnapshot) {
- Log.d(LOG_TAG, "Datachanged - " + dataSnapshot.getValue());
- DumpStringToFile.getInstance().queueStringToFile("firebase", "DataChanged");
- }
- @Override
- public void onCancelled(final DatabaseError firebaseError) {
- Log.d(LOG_TAG, "DatabaseError - " + firebaseError.getMessage());
- }
- }
- public static class DatabaseMessage {
- public String message;
- public Map<String, String> timestamp;
- public DatabaseMessage(final String message) {
- this.message = message;
- this.timestamp = ServerValue.TIMESTAMP;
- }
- }
- private class RunnableSendPush implements Runnable {
- @Override
- public void run() {
- Integer number = 1;
- while (mRun = true) {
- if ((number % 600) == 0) {
- Log.d(LOG_TAG, "RunnableSendPush - calling signOut");
- mAuth.signOut();
- number++;
- } else if (databaseReference != null) {
- Log.d(LOG_TAG, "RunnableSendPush - sending push " + number.toString());
- databaseReference.push().setValue(new DatabaseMessage(number.toString()));
- number++;
- }
- SystemClock.sleep(6000);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement