Advertisement
Guest User

Untitled

a guest
May 29th, 2016
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.15 KB | None | 0 0
  1. 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
  2. android.app.ActivityThread.handleCreateService (ActivityThread.java:2762)
  3. android.app.ActivityThread.access$1800 (ActivityThread.java:151)
  4. android.app.ActivityThread$H.handleMessage (ActivityThread.java:1424)
  5. android.os.Handler.dispatchMessage (Handler.java:110)
  6. android.os.Looper.loop (Looper.java:193)
  7. android.app.ActivityThread.main (ActivityThread.java:5323)
  8. java.lang.reflect.Method.invokeNative (Method.java:)
  9. java.lang.reflect.Method.invoke (Method.java:515)
  10. com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:825)
  11. com.android.internal.os.ZygoteInit.main (ZygoteInit.java:641)
  12. dalvik.system.NativeStart.main (NativeStart.java:)
  13.  
  14. Caused by java.lang.ClassCastException: com.google.android.gms.c.pb cannot be cast to com.google.firebase.auth.n
  15. com.google.android.gms.c.ah.a (ah.java:)
  16. com.google.firebase.auth.FirebaseAuth.a (FirebaseAuth.java:)
  17. com.google.firebase.auth.FirebaseAuth.e (FirebaseAuth.java:)
  18. com.google.firebase.auth.FirebaseAuth.<init> (FirebaseAuth.java:)
  19. com.google.firebase.auth.FirebaseAuth.<init> (FirebaseAuth.java:)
  20. com.google.android.gms.c.ag.<init> (ag.java:)
  21. com.google.firebase.auth.FirebaseAuth.c (FirebaseAuth.java:)
  22. com.google.firebase.auth.FirebaseAuth.b (FirebaseAuth.java:)
  23. com.google.firebase.auth.FirebaseAuth.b (FirebaseAuth.java:)
  24. com.air.advantage.aaservice.p.onCreate (p.java:)
  25. com.air.advantage.aaservice.ServiceUart.onCreate (ServiceUart.java:)
  26. android.app.ActivityThread.handleCreateService (ActivityThread.java:2752)
  27. android.app.ActivityThread.access$1800 (ActivityThread.java:151)
  28. android.app.ActivityThread$H.handleMessage (ActivityThread.java:1424)
  29. android.os.Handler.dispatchMessage (Handler.java:110)
  30. android.os.Looper.loop (Looper.java:193)
  31. android.app.ActivityThread.main (ActivityThread.java:5323)
  32. java.lang.reflect.Method.invokeNative (Method.java:)
  33. java.lang.reflect.Method.invoke (Method.java:515)
  34. com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:825)
  35. com.android.internal.os.ZygoteInit.main (ZygoteInit.java:641)
  36. dalvik.system.NativeStart.main (NativeStart.java:)
  37.  
  38. import android.app.Service;
  39. import android.content.Intent;
  40. import android.os.IBinder;
  41. import android.os.SystemClock;
  42. import android.support.annotation.NonNull;
  43. import android.support.annotation.Nullable;
  44. import android.util.Log;
  45.  
  46. import com.google.android.gms.tasks.OnCompleteListener;
  47. import com.google.android.gms.tasks.Task;
  48. import com.google.firebase.auth.AuthResult;
  49. import com.google.firebase.auth.FirebaseAuth;
  50. import com.google.firebase.auth.FirebaseUser;
  51. import com.google.firebase.database.DataSnapshot;
  52. import com.google.firebase.database.DatabaseError;
  53. import com.google.firebase.database.DatabaseException;
  54. import com.google.firebase.database.DatabaseReference;
  55. import com.google.firebase.database.FirebaseDatabase;
  56. import com.google.firebase.database.Logger;
  57. import com.google.firebase.database.ServerValue;
  58. import com.google.firebase.database.ValueEventListener;
  59.  
  60. import java.util.Map;
  61. import java.util.concurrent.atomic.AtomicReference;
  62.  
  63. public class ServiceFirebase extends Service {
  64. public static final AtomicReference<String> uid = new AtomicReference<>("");
  65. private static final String LOG_TAG = ServiceFirebase.class.getSimpleName();
  66. private static final String FROM_SERVICE = "fromService";
  67. private static final String BASE_URL = "https://REMOVED/";
  68. private static DatabaseReference databaseReference;
  69. private FirebaseAuth.AuthStateListener mAuthListener;
  70. private MyValueEventListener valueEventListener;
  71. private FirebaseAuth mAuth;
  72. private boolean mRun = true;
  73.  
  74. public static synchronized String getPassword() {
  75. return "test";
  76. }
  77.  
  78. public static synchronized String getUsername() {
  79. return "bob@address.com";
  80. }
  81.  
  82. @Override
  83. public void onCreate() {
  84. super.onCreate();
  85. Log.d(LOG_TAG, "onCreate");
  86.  
  87. try {
  88. FirebaseDatabase.getInstance().setLogLevel(Logger.Level.DEBUG);
  89. } catch (DatabaseException e) {
  90. // This is called multiple times???
  91. }
  92.  
  93. mAuth = FirebaseAuth.getInstance();
  94.  
  95. if (mAuthListener != null) {
  96. mAuth.removeAuthStateListener(mAuthListener);
  97. }
  98. mAuthListener = new FirebaseAuth.AuthStateListener() {
  99. @Override
  100. public void onAuthStateChanged(@NonNull final FirebaseAuth firebaseAuth) {
  101. final FirebaseUser user = firebaseAuth.getCurrentUser();
  102. if (user != null) {
  103. // User is signed in
  104. Log.d(LOG_TAG, "onAuthStateChanged:signed_in:" + user.getUid());
  105. DumpStringToFile.getInstance().queueStringToFile("firebase", "Signed in");
  106. uid.set(user.getUid());
  107. removeListeners();
  108. addListeners();
  109. } else {
  110. // User is signed out
  111. Log.d(LOG_TAG, "onAuthStateChanged:signed_out");
  112. DumpStringToFile.getInstance().queueStringToFile("firebase", "Signed out");
  113. uid.set("");
  114. databaseReference = null;
  115. login();
  116. }
  117. }
  118. };
  119. //Always sign out just in case username or passwords have changed
  120. mAuth.signOut();
  121. mAuth.addAuthStateListener(mAuthListener);
  122.  
  123. mAuth.createUserWithEmailAndPassword(getUsername(), getPassword()).addOnCompleteListener(new com.google.android.gms.tasks.OnCompleteListener<AuthResult>() {
  124. @Override
  125. public void onComplete(@NonNull final Task<AuthResult> task) {
  126. Log.d(LOG_TAG, "createUserWithEmail:onComplete:" + task.isSuccessful());
  127.  
  128. // If sign up fails it generally means that the user already exists - we just have to login
  129. if (!task.isSuccessful()) {
  130. login();
  131. }
  132. }
  133. });
  134. }
  135.  
  136. private void removeListeners() {
  137. Log.d(LOG_TAG, "addValueEventListener removed");
  138. if (valueEventListener != null) {
  139. final DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReferenceFromUrl(BASE_URL + uid.get());
  140. databaseReference.child(FROM_SERVICE).removeEventListener(valueEventListener);
  141. }
  142. }
  143.  
  144. @Override
  145. public void onDestroy() {
  146. super.onDestroy();
  147.  
  148. if (mAuthListener != null) {
  149. mAuth.removeAuthStateListener(mAuthListener);
  150. }
  151.  
  152. mRun = false;
  153.  
  154. removeListeners();
  155. }
  156.  
  157. @Nullable
  158. @Override
  159. public IBinder onBind(final Intent intent) {
  160. return null;
  161. }
  162.  
  163. @Override
  164. public int onStartCommand(Intent intent, int flags, int startId) {
  165. Thread thread = new Thread(new RunnableSendPush());
  166. thread.start();
  167.  
  168. return Service.START_NOT_STICKY;
  169. }
  170.  
  171. private void addListeners() {
  172. Log.d(LOG_TAG, "addValueEventListener added");
  173. if (valueEventListener == null) {
  174. valueEventListener = new MyValueEventListener();
  175. }
  176. if (databaseReference != null) {
  177. databaseReference.child(FROM_SERVICE).addValueEventListener(valueEventListener);
  178. }
  179. }
  180.  
  181. private void login() {
  182. mAuth.signInWithEmailAndPassword(getUsername(), getPassword()).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
  183. @Override
  184. public void onComplete(@NonNull final Task<AuthResult> task) {
  185. Log.d(LOG_TAG, "signInWithEmailAndPassword:onComplete:" + task.isSuccessful());
  186. DumpStringToFile.getInstance().queueStringToFile("firebase", "Login in - " + task.isSuccessful());
  187. if (task.isSuccessful()) {
  188. databaseReference = FirebaseDatabase.getInstance().getReferenceFromUrl(BASE_URL + uid.get() + "/" + FROM_SERVICE);
  189. // FirebaseUser user = mAuth.getCurrentUser(); // mAuth is your current firebase auth instanceuser.getToken(true);
  190. // user.getToken(true).addOnCompleteListener(new OnCompleteListener<GetTokenResult>() {
  191. // @Override
  192. // public void onComplete(@NonNull Task<GetTokenResult> task) {
  193. // if (task.isSuccessful()) {
  194. // Log.d(LOG_TAG, "token=" + task.getResult().getToken());
  195. // } else {
  196. // Log.e(LOG_TAG, "exception=" + task.getException().toString());
  197. // }
  198. // }
  199. // });
  200. }
  201. }
  202. });
  203. }
  204.  
  205. private static class MyValueEventListener implements ValueEventListener {
  206. @Override
  207. public void onDataChange(final DataSnapshot dataSnapshot) {
  208. Log.d(LOG_TAG, "Datachanged - " + dataSnapshot.getValue());
  209. DumpStringToFile.getInstance().queueStringToFile("firebase", "DataChanged");
  210. }
  211.  
  212. @Override
  213. public void onCancelled(final DatabaseError firebaseError) {
  214. Log.d(LOG_TAG, "DatabaseError - " + firebaseError.getMessage());
  215. }
  216. }
  217.  
  218. public static class DatabaseMessage {
  219. public String message;
  220. public Map<String, String> timestamp;
  221.  
  222. public DatabaseMessage(final String message) {
  223. this.message = message;
  224. this.timestamp = ServerValue.TIMESTAMP;
  225. }
  226. }
  227.  
  228. private class RunnableSendPush implements Runnable {
  229.  
  230. @Override
  231. public void run() {
  232. Integer number = 1;
  233. while (mRun = true) {
  234. if ((number % 600) == 0) {
  235. Log.d(LOG_TAG, "RunnableSendPush - calling signOut");
  236. mAuth.signOut();
  237. number++;
  238. } else if (databaseReference != null) {
  239. Log.d(LOG_TAG, "RunnableSendPush - sending push " + number.toString());
  240. databaseReference.push().setValue(new DatabaseMessage(number.toString()));
  241. number++;
  242. }
  243. SystemClock.sleep(6000);
  244. }
  245. }
  246. }
  247. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement