i am using firebase database and wanted to match a value (the schoolcode) of the user being added to contacts with current users value ( schoolcode) and when i added the code user1.getSchoolCode it started crashing any ideas?
if i pass just a simple string like if (user.getSchoolcode().equals("001")) {
users.add(user);
} it works but user1.getSchoolCode dont work
RecyclerView recyclerView;
UserAdapter userAdapter;
List<User> users;
FirebaseUser firebaseUser;
DatabaseReference reference;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contacts_parent);
recyclerView = findViewById(R.id.recycler_view);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
users = new ArrayList<>();
firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
reference = FirebaseDatabase.getInstance().getReference("teacher");
readUsers();
}
private void readUsers() {
reference.addValueEventListener(new ValueEventListener() {
#Override
public void onDataChange(#NonNull DataSnapshot dataSnapshot) {
users.clear();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
DataSnapshot snapshot1 = dataSnapshot.child(firebaseUser.getUid());
User user = snapshot.getValue(User.class);
User user1 = snapshot1.getValue(User.class);
assert user != null;
if (user.getSchoolcode().equals(user1.getSchoolcode())) {
users.add(user);
}
}
userAdapter= new UserAdapter(getApplicationContext(), users);
recyclerView.setAdapter(userAdapter);
}
#Override
public void onCancelled(#NonNull DatabaseError databaseError) {
}
});
}
}
thanks in advance
this is the logcat
2020-04-15 16:01:44.851 15021-15021/net.gobz.gobz D/AndroidRuntime: Shutting down VM
2020-04-15 16:01:44.852 15021-15021/net.gobz.gobz E/AndroidRuntime: FATAL EXCEPTION: main
Process: net.gobz.gobz, PID: 15021
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String net.gobz.gobz.Model.User.getSchoolcode()' on a null object reference
at net.gobz.gobz.parent.ContactsParentActivity$1.onDataChange(ContactsParentActivity.java:69)
at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database##19.2.1:75)
at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database##19.2.1:63)
at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database##19.2.1:55)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7099)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
2020-04-15 16:01:44.864 15021-15021/net.gobz.gobz I/Process: Sending signal. PID: 15021 SIG: 9
i dont know if you need this too
2020-04-15 15:55:56.298 15021-15021/? E/Zygote: isWhitelistProcess - Process is Whitelisted
2020-04-15 15:55:56.298 15021-15021/? E/Zygote: accessInfo : 1
2020-04-15 15:55:56.304 15021-15021/? I/net.gobz.gobz: Late-enabling -Xcheck:jni
2020-04-15 15:55:56.336 15021-15021/? I/net.gobz.gobz: report jit thread pid = 15027
2020-04-15 15:55:56.966 15021-15021/net.gobz.gobz I/MultiDex: VM with version 2.1.0 has multidex support
2020-04-15 15:55:56.967 15021-15021/net.gobz.gobz I/MultiDex: Installing application
2020-04-15 15:55:56.967 15021-15021/net.gobz.gobz I/MultiDex: VM has multidex support, MultiDex support library is disabled.
2020-04-15 15:55:57.011 15021-15057/net.gobz.gobz W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
2020-04-15 15:55:57.029 15021-15021/net.gobz.gobz D/FirebaseAuth: Notifying id token listeners about user ( RvM1ycqh35Vxzi4M8NzHGaFERMp1 ).
2020-04-15 15:55:57.034 15021-15021/net.gobz.gobz I/FirebaseInitProvider: FirebaseApp initialization successful
2020-04-15 15:55:57.042 15021-15059/net.gobz.gobz W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
2020-04-15 15:55:57.051 15021-15059/net.gobz.gobz I/FirebaseAuth: [FirebaseAuth:] Preparing to create service connection to gms implementation
2020-04-15 15:55:57.114 15021-15021/net.gobz.gobz W/net.gobz.gobz: Accessing hidden method Landroid/graphics/drawable/Drawable;->getOpticalInsets()Landroid/graphics/Insets; (light greylist, linking)
2020-04-15 15:55:57.114 15021-15021/net.gobz.gobz W/net.gobz.gobz: Accessing hidden field Landroid/graphics/Insets;->left:I (light greylist, linking)
2020-04-15 15:55:57.114 15021-15021/net.gobz.gobz W/net.gobz.gobz: Accessing hidden field Landroid/graphics/Insets;->right:I (light greylist, linking)
2020-04-15 15:55:57.114 15021-15021/net.gobz.gobz W/net.gobz.gobz: Accessing hidden field Landroid/graphics/Insets;->top:I (light greylist, linking)
2020-04-15 15:55:57.114 15021-15021/net.gobz.gobz W/net.gobz.gobz: Accessing hidden field Landroid/graphics/Insets;->bottom:I (light greylist, linking)
2020-04-15 15:55:57.141 15021-15021/net.gobz.gobz W/Glide: Failed to find GeneratedAppGlideModule. You should include an annotationProcessor compile dependency on com.github.bumptech.glide:compiler in your application and a #GlideModule annotated AppGlideModule implementation or LibraryGlideModules will be silently ignored
2020-04-15 15:55:57.193 15021-15021/net.gobz.gobz I/DecorView: createDecorCaptionView >> DecorView#a917524[], isFloating: false, isApplication: true, hasWindowDecorCaption: false, hasWindowControllerCallback: true
2020-04-15 15:55:57.228 15021-15021/net.gobz.gobz W/net.gobz.gobz: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (light greylist, reflection)
2020-04-15 15:55:57.229 15021-15021/net.gobz.gobz W/net.gobz.gobz: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (light greylist, reflection)
2020-04-15 15:55:57.295 15021-15021/net.gobz.gobz W/net.gobz.gobz: Accessing hidden method Landroid/widget/TextView;->getTextDirectionHeuristic()Landroid/text/TextDirectionHeuristic; (light greylist, linking)
2020-04-15 15:55:57.339 15021-15021/net.gobz.gobz W/net.gobz.gobz: Accessing hidden field Landroid/view/View;->mAccessibilityDelegate:Landroid/view/View$AccessibilityDelegate; (light greylist, reflection)
2020-04-15 15:55:57.572 15021-15021/net.gobz.gobz D/OpenGLRenderer: Skia GL Pipeline
2020-04-15 15:55:57.578 15021-15021/net.gobz.gobz D/EmergencyMode: [EmergencyManager] android createPackageContext successful
2020-04-15 15:55:57.641 15021-15021/net.gobz.gobz D/InputTransport: Input channel constructed: fd=64
2020-04-15 15:55:57.642 15021-15021/net.gobz.gobz D/ViewRootImpl#98b94c[MainParentActivity]: setView = DecorView#a917524[MainParentActivity] TM=true MM=false
2020-04-15 15:55:57.670 15021-15066/net.gobz.gobz D/NetworkSecurityConfig: No Network Security Config specified, using platform default
2020-04-15 15:55:57.676 15021-15066/net.gobz.gobz D/NetworkManagementSocketTagger: tagSocket(62) with statsTag=0xffffffff, statsUid=-1
2020-04-15 15:55:57.734 15021-15021/net.gobz.gobz D/ViewRootImpl#98b94c[MainParentActivity]: Relayout returned: old=[0,0][1080,2340] new=[0,0][1080,2340] result=0x7 surface={true 537833799680} changed=true
2020-04-15 15:55:57.751 15021-15065/net.gobz.gobz I/ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0
2020-04-15 15:55:57.752 15021-15065/net.gobz.gobz I/ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 0
2020-04-15 15:55:57.752 15021-15065/net.gobz.gobz I/OpenGLRenderer: Initialized EGL, version 1.4
2020-04-15 15:55:57.752 15021-15065/net.gobz.gobz D/OpenGLRenderer: Swap behavior 2
2020-04-15 15:55:57.766 15021-15065/net.gobz.gobz D/mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
2020-04-15 15:55:57.766 15021-15065/net.gobz.gobz D/OpenGLRenderer: eglCreateWindowSurface = 0x7d3d346e00, 0x7d39648010
2020-04-15 15:55:57.832 15021-15021/net.gobz.gobz D/ViewRootImpl#98b94c[MainParentActivity]: Relayout returned: old=[0,0][1080,2340] new=[0,0][1080,2340] result=0x3 surface={true 537833799680} changed=false
2020-04-15 15:55:57.967 15021-15021/net.gobz.gobz D/ViewRootImpl#98b94c[MainParentActivity]: MSG_RESIZED: frame=[0,0][1080,2340] ci=[0,83][0,126] vi=[0,83][0,126] or=1
2020-04-15 15:55:57.968 15021-15021/net.gobz.gobz D/ViewRootImpl#98b94c[MainParentActivity]: MSG_WINDOW_FOCUS_CHANGED 1 1
2020-04-15 15:55:57.968 15021-15021/net.gobz.gobz D/InputMethodManager: prepareNavigationBarInfo() DecorView#a917524[MainParentActivity]
2020-04-15 15:55:57.969 15021-15021/net.gobz.gobz D/InputMethodManager: getNavigationBarColor() -855310
2020-04-15 15:55:57.979 15021-15021/net.gobz.gobz D/InputMethodManager: prepareNavigationBarInfo() DecorView#a917524[MainParentActivity]
2020-04-15 15:55:57.979 15021-15021/net.gobz.gobz D/InputMethodManager: getNavigationBarColor() -855310
2020-04-15 15:55:57.979 15021-15021/net.gobz.gobz V/InputMethodManager: Starting input: tba=net.gobz.gobz ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
2020-04-15 15:55:57.979 15021-15021/net.gobz.gobz D/InputMethodManager: startInputInner - Id : 0
2020-04-15 15:55:57.979 15021-15021/net.gobz.gobz I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
2020-04-15 15:55:57.990 15021-15040/net.gobz.gobz D/InputTransport: Input channel constructed: fd=84
2020-04-15 15:55:57.990 15021-15021/net.gobz.gobz D/InputMethodManager: prepareNavigationBarInfo() DecorView#a917524[MainParentActivity]
2020-04-15 15:55:57.991 15021-15021/net.gobz.gobz D/InputMethodManager: getNavigationBarColor() -855310
2020-04-15 15:55:57.991 15021-15021/net.gobz.gobz V/InputMethodManager: Starting input: tba=net.gobz.gobz ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
2020-04-15 15:55:57.991 15021-15021/net.gobz.gobz D/InputMethodManager: startInputInner - Id : 0
2020-04-15 15:56:00.294 15021-15021/net.gobz.gobz W/ClassMapper: No setter/field for studentname found on class net.gobz.gobz.Model.User
2020-04-15 15:56:00.295 15021-15021/net.gobz.gobz W/ClassMapper: No setter/field for grade found on class net.gobz.gobz.Model.User
2020-04-15 15:56:00.295 15021-15021/net.gobz.gobz W/ClassMapper: No setter/field for section found on class net.gobz.gobz.Model.User
2020-04-15 15:56:00.296 15021-15021/net.gobz.gobz W/ClassMapper: No setter/field for status found on class net.gobz.gobz.Model.User
here is a screenshot of my database
i have one more problem now when i touch the contact and open the messaging activity it is crashing again
this is my messages activity
CircleImageView imageView;
FirebaseUser firebaseUser;
DatabaseReference reference;
Intent intent;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_message);
final Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
finish();
}
});
imageView = findViewById(R.id.profile_image);
intent = getIntent();
String userid = intent.getStringExtra("userid");
firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
reference = FirebaseDatabase.getInstance().getReference("parent").child(userid);
reference.addValueEventListener(new ValueEventListener() {
#Override
public void onDataChange(#NonNull DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class);
if (user.getImageURL().equals("default")) {
imageView.setImageResource(R.drawable.ic_user);
}else {
Glide.with(MessageActivity.this).load(user.getImageURL()).into(imageView);
}
}
#Override
public void onCancelled(#NonNull DatabaseError databaseError) {
}
});
}
}
and this is the intent i was calling for
holder.itemView.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
Intent intent = new Intent(context, MessageActivity.class);
intent.putExtra("userid", user.getId());
context.startActivity(intent);
}
});
first get current user from Firebase
private void getCurrentUser(String userID) {
Log.("UserId==>",userID+"");//do check this value in teacher database
FirebaseDatabase.getInstance().getReference("parent").child(userID).addValueEventListener(new ValueEventListener() {
#Override
public void onDataChange(#NonNull DataSnapshot dataSnapshot) {
try{ if(dataSnapshot != null){ Log.e("UserVal==>", snapshot.getValue(JSONObject.class));
User user1 = snapshot.getValue(User.class);
readUsers(user1.getSchoolcode());}} catch (Exception e){e.printstacktrace(); Log.e("getusererror",e.getMessage());}
}
#Override
public void onCancelled(#NonNull DatabaseError databaseError) {
}
});
}
And update your readUsers method like this , you can also change parameter to pass User instead of schoolCode
private void readUsers(String schoolCode) {
reference.addValueEventListener(new ValueEventListener() {
#Override
public void onDataChange(#NonNull DataSnapshot dataSnapshot) {
try{ users.clear();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
User user = snapshot.getValue(User.class);
assert user != null;
if (user.getSchoolcode().equals(schoolCode)) {
users.add(user);
}
}
userAdapter= new UserAdapter(getApplicationContext(), users);
recyclerView.setAdapter(userAdapter);} catch (Exception e){e.printstacktrace(); Log.e("readError",e.getMessage());}
}
#Override
public void onCancelled(#NonNull DatabaseError databaseError) {
}
});
}
first Call the getCurrentUser method
firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
reference = FirebaseDatabase.getInstance().getReference("teacher");
getCurrentUser(firebaseUser.getUid());// readUsers()
Related
I'm using Firebase Authentication in my app and I have the following code to allow the user to sign out:
FirebaseAuth.getInstance().signOut()
userInfo.removeEventListener(listener)
val intent = Intent(this#SettingsFragment.context, LoginActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK.or(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent)
The code successfully logs out the user, but I get this toast that says The client does not have permission to perform this operation. Why am I getting this toast? How do I prevent it from occurring?
UPDATE 1: Firebase Realtime Database Code and Removal of Event Listener
Below I have included my code for using Firebase Realtime Database:
userInfo = database.getReference("users").child(auth.currentUser!!.uid)
listener = userInfo.addValueEventListener(object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
for (postSnapshot in dataSnapshot.children) {
if (postSnapshot.key == "firstName") {
firstNamePreference.text = postSnapshot.getValue(String::class.java)
} else if (postSnapshot.key == "lastName") {
lastNamePreference.text = postSnapshot.getValue(String::class.java)
} else if (postSnapshot.key == "username") {
userNamePreference.title =
"Username: ${postSnapshot.getValue(String::class.java)}"
}
}
}
override fun onCancelled(databaseError: DatabaseError) {
Toast.makeText(
context, databaseError.message,
Toast.LENGTH_LONG
).show()
}
})
I have also included userInfo.removeEventListener(listener) in my sign out code, but I am still getting the error message.
UPDATE 2: Logcat in debug mode for logging out the user
D/InputTransport: Input channel destroyed: fd=77
D/ViewRootImpl#b3aa7b8[SettingsActivity]: MSG_WINDOW_FOCUS_CHANGED 0 1
D/InputMethodManager: prepareNavigationBarInfo() DecorView#6d11dc3[SettingsActivity]
D/InputMethodManager: getNavigationBarColor() -855310
W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy#f47f5fd
W/SyncTree: Listen at /users/ezTJRHVKZXhHyMGQGGljdQpfzGv1 failed: DatabaseError: This client does not have permission to perform this operation
I/DecorView: createDecorCaptionView >> DecorView#aa5b516[], isFloating: false, isApplication: true, hasWindowDecorCaption: false, hasWindowControllerCallback: true
D/InputTransport: Input channel constructed: fd=78
D/ViewRootImpl#46f9f6b[LoginActivity]: setView = DecorView#aa5b516[LoginActivity] TM=true MM=false
D/ViewRootImpl#46f9f6b[LoginActivity]: dispatchAttachedToWindow
D/ViewRootImpl#46f9f6b[LoginActivity]: Relayout returned: old=[0,0][1440,2960] new=[0,0][1440,2960] result=0x7 surface={valid=true 480479002624} changed=true
D/OpenGLRenderer: eglCreateWindowSurface = 0x6fdfef7280, 0x6fdec7c010
D/ViewRootImpl#46f9f6b[LoginActivity]: MSG_RESIZED: frame=Rect(0, 0 - 1440, 2960) ci=Rect(0, 96 - 0, 192) vi=Rect(0, 96 - 0, 192) or=1
D/ViewRootImpl#46f9f6b[LoginActivity]: MSG_WINDOW_FOCUS_CHANGED 1 1
D/InputMethodManager: prepareNavigationBarInfo() DecorView#aa5b516[LoginActivity]
D/InputMethodManager: getNavigationBarColor() -855310
D/InputMethodManager: prepareNavigationBarInfo() DecorView#aa5b516[LoginActivity]
D/InputMethodManager: getNavigationBarColor() -855310
D/InputMethodManager: startInputInner - Id : 0
I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
D/InputTransport: Input channel constructed: fd=89
D/InputTransport: Input channel destroyed: fd=97
D/FA: Connected to remote service
D/InputTransport: Input channel constructed: fd=92
D/ViewRootImpl#346cbca[Toast]: setView = android.widget.LinearLayout{75c95b1 V.E...... ......I. 0,0-0,0} TM=true MM=false
D/ViewRootImpl#346cbca[Toast]: dispatchAttachedToWindow
D/ViewRootImpl#346cbca[Toast]: Relayout returned: old=[0,96][1440,2768] new=[115,2282][1324,2512] result=0x7 surface={valid=true 480480571392} changed=true
D/OpenGLRenderer: eglCreateWindowSurface = 0x6fdf199d80, 0x6fdedfb010
D/ViewRootImpl#346cbca[Toast]: MSG_RESIZED: frame=Rect(115, 2282 - 1324, 2512) ci=Rect(0, 0 - 0, 0) vi=Rect(0, 0 - 0, 0) or=1
D/OpenGLRenderer: eglDestroySurface = 0x6fdfff3d00, 0x6fdfd7c000
D/ViewRootImpl#b3aa7b8[SettingsActivity]: Relayout returned: old=[0,0][1440,2960] new=[0,0][1440,2960] result=0x5 surface={valid=false 0} changed=true
D/ViewRootImpl#b3aa7b8[SettingsActivity]: setWindowStopped(true) old=false
D/ViewRootImpl#b3aa7b8[SettingsActivity]: Surface release. android.view.WindowManagerGlobal.setStoppedState:669 android.app.Activity.performStop:7647 android.app.ActivityThread.callActivityOnStop:4379 android.app.ActivityThread.performStopActivityInner:4357 android.app.ActivityThread.handleStopActivity:4432 android.app.servertransaction.TransactionExecutor.performLifecycleSequence:192 android.app.servertransaction.TransactionExecutor.cycleToPath:165 android.app.servertransaction.TransactionExecutor.executeLifecycleState:142
D/ViewRootImpl#b3aa7b8[SettingsActivity]: dispatchDetachedFromWindow
D/ViewRootImpl#b3aa7b8[SettingsActivity]: Surface release. android.view.ViewRootImpl.doDie:7967 android.view.ViewRootImpl.die:7935 android.view.WindowManagerGlobal.removeViewLocked:497 android.view.WindowManagerGlobal.removeView:435 android.view.WindowManagerImpl.removeViewImmediate:124 android.app.ActivityThread.handleDestroyActivity:4753 android.app.servertransaction.DestroyActivityItem.execute:39 android.app.servertransaction.TransactionExecutor.executeLifecycleState:145
D/InputTransport: Input channel destroyed: fd=91
D/OpenGLRenderer: eglDestroySurface = 0x6fdf199d80, 0x6fdedfb000
D/ViewRootImpl#346cbca[Toast]: dispatchDetachedFromWindow
D/ViewRootImpl#346cbca[Toast]: Surface release. android.view.ViewRootImpl.doDie:7967 android.view.ViewRootImpl.die:7935 android.view.WindowManagerGlobal.removeViewLocked:497 android.view.WindowManagerGlobal.removeView:435 android.view.WindowManagerImpl.removeViewImmediate:124 android.widget.Toast$TN.handleHide:1110 android.widget.Toast$TN$1.handleMessage:898 android.os.Handler.dispatchMessage:106
D/InputTransport: Input channel destroyed: fd=92
It sounds like you have a listener to one of the Firebase databases (either Realtime Database or Cloud Firestore), and this listener requires that the user is authenticated. When you sign the user out, the listener becomes invalid, and gets cancelled by Firebase with the error message you see.
The solution is to remove the listener before signing the user out.
JSON api file:
{
"state": "Jammu and Kashmir",
"statecode": "JK",
"districtData": [
{
"district": "Anantnag",
"notes": "",
"active": 107,
"confirmed": 109,
"deceased": 1,
"recovered": 1,
"delta": {
"confirmed": 0,
"deceased": 0,
"recovered": 0
}
},
{
"district": "Budgam",
"notes": "",
"active": 18,
"confirmed": 30,
"deceased": 0,
"recovered": 12,
"delta": {
"confirmed": 4,
"deceased": 0,
"recovered": 0
}
}
]
}
Java Code:
StringRequest stringRequest = new StringRequest(Request.Method.GET,
"https://api.covid19india.org/v2/state_district_wise.json",
new Response.Listener<String>() {
#Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray jsonArray = jsonObject.getJSONArray("districtData");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject object = jsonArray.getJSONObject(i);
// Need to get data here !!!
}
progressDialog.cancel();
} catch (Exception e) {
}
}
}, new Response.ErrorListener() {
#Override
public void onErrorResponse(VolleyError error) {
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
Logcat (debug): Down below is the logcat which I am getting when trying to run my app.
2020-05-05 16:21:49.663 8813-8813/? I/owais.wabah202: Late-enabling -Xcheck:jni
2020-05-05 16:21:50.013 8813-8813/com.johnowais.wabah2020 I/Perf: Connecting to perf service.
2020-05-05 16:21:50.160 8813-8813/com.johnowais.wabah2020 W/owais.wabah202: Accessing hidden method Landroid/graphics/drawable/Drawable;->getOpticalInsets()Landroid/graphics/Insets; (light greylist, linking)
2020-05-05 16:21:50.160 8813-8813/com.johnowais.wabah2020 W/owais.wabah202: Accessing hidden field Landroid/graphics/Insets;->left:I (light greylist, linking)
2020-05-05 16:21:50.160 8813-8813/com.johnowais.wabah2020 W/owais.wabah202: Accessing hidden field Landroid/graphics/Insets;->right:I (light greylist, linking)
2020-05-05 16:21:50.160 8813-8813/com.johnowais.wabah2020 W/owais.wabah202: Accessing hidden field Landroid/graphics/Insets;->top:I (light greylist, linking)
2020-05-05 16:21:50.160 8813-8813/com.johnowais.wabah2020 W/owais.wabah202: Accessing hidden field Landroid/graphics/Insets;->bottom:I (light greylist, linking)
2020-05-05 16:21:50.235 8813-8813/com.johnowais.wabah2020 W/owais.wabah202: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (light greylist, reflection)
2020-05-05 16:21:50.239 8813-8813/com.johnowais.wabah2020 W/owais.wabah202: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (light greylist, reflection)
2020-05-05 16:21:50.289 8813-8813/com.johnowais.wabah2020 W/owais.wabah202: Accessing hidden method Landroid/widget/TextView;->getTextDirectionHeuristic()Landroid/text/TextDirectionHeuristic; (light greylist, linking)
2020-05-05 16:21:50.389 8813-8813/com.johnowais.wabah2020 D/OpenGLRenderer: Skia GL Pipeline
2020-05-05 16:21:50.495 8813-8856/com.johnowais.wabah2020 I/Adreno: QUALCOMM build : 2df12b3, I07da2d9908
Build Date : 10/04/18
OpenGL ES Shader Compiler Version: EV031.25.03.01
Local Branch :
Remote Branch :
Remote Branch :
Reconstruct Branch :
2020-05-05 16:21:50.495 8813-8856/com.johnowais.wabah2020 I/Adreno: Build Config : S L 6.0.7 AArch64
2020-05-05 16:21:50.495 8813-8856/com.johnowais.wabah2020 D/vndksupport: Loading /vendor/lib64/hw/gralloc.msm8953.so from current namespace instead of sphal namespace.
2020-05-05 16:21:50.502 8813-8856/com.johnowais.wabah2020 I/Adreno: PFP: 0x005ff087, ME: 0x005ff063
2020-05-05 16:21:50.509 8813-8856/com.johnowais.wabah2020 I/ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0
2020-05-05 16:21:50.509 8813-8856/com.johnowais.wabah2020 I/ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 0
2020-05-05 16:21:50.511 8813-8856/com.johnowais.wabah2020 I/OpenGLRenderer: Initialized EGL, version 1.4
2020-05-05 16:21:50.511 8813-8856/com.johnowais.wabah2020 D/OpenGLRenderer: Swap behavior 2
2020-05-05 16:21:50.513 8813-8858/com.johnowais.wabah2020 D/NetworkSecurityConfig: No Network Security Config specified, using platform default
2020-05-05 16:21:50.515 8813-8858/com.johnowais.wabah2020 I/DpmTcmClient: RegisterTcmMonitor from: com.android.okhttp.TcmIdleTimerMonitor
2020-05-05 16:21:50.565 8813-8856/com.johnowais.wabah2020 D/vndksupport: Loading /vendor/lib64/hw/android.hardware.graphics.mapper#2.0-impl.so from current namespace instead of sphal namespace.
2020-05-05 16:21:50.566 8813-8856/com.johnowais.wabah2020 D/vndksupport: Loading /vendor/lib64/hw/gralloc.msm8953.so from current namespace instead of sphal namespace.
I am not able to fetch data as it is not in proper format. I want to use where clause also which will give me data of each district of a state which I want.
API link: https://api.covid19india.org/v2/state_district_wise.json
STRUCTURE
JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, "https://api.covid19india.org/v2/state_district_wise.json",null,
new Response.Listener<JSONArray>() {
#Override
public void onResponse(JSONArray response) {
try {
for (int i = 0; i < response.length(); i++) {
JSONObject dataOBJ = response.getJSONObject(i);
JSONArray jsonChild = dataOBJ.getJSONArray("districtData");
for (int k = 0; k < jsonChild.length(); k++) {
JSONObject obj = jsonChild.getJSONObject(k);
int active = obj.getInt("active");
String district = obj.getString("district");
JSONObject child = obj.getJSONObject("delta");
int confirmed = child.getInt("confirmed");
}
}
} catch (Exception exp) {
}
}
}, new Response.ErrorListener() {
#Override
public void onErrorResponse(VolleyError error) {
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(request);
Try this way
StringRequest stringRequest = new StringRequest(Request.Method.GET,
"https://api.covid19india.org/v2/state_district_wise.json",
new Response.Listener<String>() {
#Override
public void onResponse(String response) {
Log.d(TAG, "onResponse: "+response);
try {
JSONArray responseArray = new JSONArray(response);
for (int i = 0; i < responseArray.length(); i++) {
JSONObject stateObject = responseArray.getJSONObject(i);
JSONArray districtArray = stateObject.getJSONArray("districtData");
for(int j=0; j<districtArray.length(); j++){
JSONObject districtObject = districtArray.getJSONObject(j);
//do what you want to do with district object
Log.d(TAG, "onResponse: "+districtObject.toString());
}
}
}catch (JSONException e){
Log.d(TAG, "onResponse: "+e.getMessage());
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
#Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
This question already has an answer here:
Firestore whereEqualTo, orderBy and limit(1) not working
(1 answer)
Closed 3 years ago.
I create the project in firebase using a cloud database and I want to compare empUID field which store in a document with current UID.
I created one query which gets the data when current UID and empUID is match but failed to get data.
Please guide is my Query right or am I need to changes in my code
MY Subcollection Path
Employer(root Collection)-->Job Post(Sub collection)-->Job Applicant
Details(sub collection of Job post)
Logcat
2020-02-10 10:38:36.239 29836-29895/com.example.part_time_job I/Adreno: Build Config : S P 6.0.7 AArch64
2020-02-10 10:38:36.231 29836-29836/com.example.part_time_job W/RenderThread: type=1400 audit(0.0:9359): avc: denied { search } for name="proc" dev="debugfs" ino=16085 scontext=u:r:untrusted_app:s0:c183,c257,c512,c768 tcontext=u:object_r:qti_debugfs:s0 tclass=dir permissive=0
2020-02-10 10:38:36.242 29836-29895/com.example.part_time_job I/Adreno: PFP: 0x016ee180, ME: 0x00000000
2020-02-10 10:38:36.231 29836-29836/com.example.part_time_job W/RenderThread: type=1400 audit(0.0:9360): avc: denied { search } for name="ctx" dev="debugfs" ino=16114 scontext=u:r:untrusted_app:s0:c183,c257,c512,c768 tcontext=u:object_r:qti_debugfs:s0 tclass=dir permissive=0
2020-02-10 10:38:36.245 29836-29895/com.example.part_time_job I/ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0
2020-02-10 10:38:36.245 29836-29895/com.example.part_time_job I/ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 0
2020-02-10 10:38:36.245 29836-29895/com.example.part_time_job D/libEGL: eglInitialize: exit(res=1)
2020-02-10 10:38:36.245 29836-29895/com.example.part_time_job I/OpenGLRenderer: Initialized EGL, version 1.4
2020-02-10 10:38:36.246 29836-29895/com.example.part_time_job D/OpenGLRenderer: Swap behavior 2
2020-02-10 10:38:36.241 29836-29836/com.example.part_time_job W/RenderThread: type=1400 audit(0.0:9361): avc: denied { search } for name="ctx" dev="debugfs" ino=16114 scontext=u:r:untrusted_app:s0:c183,c257,c512,c768 tcontext=u:object_r:qti_debugfs:s0 tclass=dir permissive=0
2020-02-10 10:38:36.369 29836-29894/com.example.part_time_job W/e.part_time_jo: Accessing hidden method Ljava/security/spec/ECParameterSpec;->setCurveName(Ljava/lang/String;)V (light greylist, reflection)
2020-02-10 10:38:36.391 29836-29894/com.example.part_time_job W/e.part_time_jo: Accessing hidden method Ldalvik/system/BlockGuard;->getThreadPolicy()Ldalvik/system/BlockGuard$Policy; (light greylist, linking)
2020-02-10 10:38:36.391 29836-29894/com.example.part_time_job W/e.part_time_jo: Accessing hidden method Ldalvik/system/BlockGuard$Policy;->onNetwork()V (light greylist, linking)
2020-02-10 10:38:37.656 29836-29836/com.example.part_time_job E/RecyclerView: No adapter attached; skipping layout
2020-02-10 10:38:38.262 29836-29836/com.example.part_time_job E/Register4: Received an exception FAILED_PRECONDITION: The query requires an index. You can create it here: https://console.firebase.google.com/v1/r/project/part-time-job-74d92/firestore/indexes?create_composite=Cmxwcm9qZWN0cy9wYXJ0LXRpbWUtam9iLTc0ZDkyL2RhdGFiYXNlcy8oZGVmYXVsdCkvY29sbGVjdGlvbkdyb3Vwcy9Kb2IgQXBwbGljYW50IERldGFpbHMvaW5kZXhlcy9DSUNBZ09qWGg0RUsQAhoKCgZlbXBVSUQQARoKCgZ1c2VySWQQARoMCghfX25hbWVfXxAB
2020-02-10 10:38:38.263 29836-29877/com.example.part_time_job W/Firestore: (21.3.1) [Firestore]: Listen for Query(target=Query( collectionGroup=Job Applicant Details where userId == uOQXpA8WSgWb5DeDqXxLsdEz0G22 and empUID == null order by __name__);limitType=LIMIT_TO_FIRST) failed: Status{code=FAILED_PRECONDITION, description=The query requires an index. You can create it here: https://console.firebase.google.com/v1/r/project/part-time-job-74d92/firestore/indexes?create_composite=Cmxwcm9qZWN0cy9wYXJ0LXRpbWUtam9iLTc0ZDkyL2RhdGFiYXNlcy8oZGVmYXVsdCkvY29sbGVjdGlvbkdyb3Vwcy9Kb2IgQXBwbGljYW50IERldGFpbHMvaW5kZXhlcy9DSUNBZ09qWGg0RUsQAhoKCgZlbXBVSUQQARoKCgZ1c2VySWQQARoMCghfX25hbWVfXxAB, cause=null}
2020-02-10 10:38:41.232 29836-29870/com.example.part_time_job V/FA: Inactivity, disconnecting from the service
My Java Code
package com.example.part_time_job;
import android.location.Address;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.firestore.CollectionReference;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.QueryDocumentSnapshot;
import com.google.firebase.firestore.QuerySnapshot;
import java.util.ArrayList;
import java.util.List;
import model.FInalApplyNotification;
import model.Jobpost;
import ui.JournalRecyclerAdapterNotificationEmp;
import util.JournalApi;
/**
* A simple {#link Fragment} subclass.
*/
public class HistoryFragment extends Fragment {
private static final String TAG = "Register4";
private FirebaseUser user;
private FirebaseAuth firebaseAuth;
private FirebaseAuth.AuthStateListener authStateListener;
private FirebaseFirestore db = FirebaseFirestore.getInstance();
private List<FInalApplyNotification> journalList;
private String empid;
private String title;
private String currentUserId;
private RecyclerView recyclerViewnotifyemp;
private JournalRecyclerAdapterNotificationEmp journalRecyclerAdapterNotificationEmp;
private CollectionReference collectionReference=db.collection("Employer");
private TextView no_listnotifyemp;
public HistoryFragment() {
// Required empty public constructor
}
#Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view=inflater.inflate(R.layout.fragment_history, container, false);
firebaseAuth= FirebaseAuth.getInstance();
user =firebaseAuth.getCurrentUser();
no_listnotifyemp= view.findViewById(R.id.no_listnotifyemp);
journalList=new ArrayList<>();
recyclerViewnotifyemp=view.findViewById(R.id.recyclerViewnotifyemp);
recyclerViewnotifyemp.setHasFixedSize(true);
recyclerViewnotifyemp.setLayoutManager(new LinearLayoutManager(getActivity()));
currentUserId=JournalApi.getInstance().getUserId();
return view;
}
#Override
public void onStart() {
super.onStart();
if (journalList!=null){
journalList.clear();
}
FInalApplyNotification fInalApplyNotification=new FInalApplyNotification();
fInalApplyNotification.setTitle(title);
fInalApplyNotification.setUserId(currentUserId);
db.collectionGroup("Job Applicant Details").whereEqualTo("userId",currentUserId).whereEqualTo("empUID",fInalApplyNotification.getEmpUID())
.get()
.addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
#Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
if (!queryDocumentSnapshots.isEmpty()) {
for (QueryDocumentSnapshot journals : queryDocumentSnapshots) {
FInalApplyNotification fInalApplyNotification = journals.toObject(FInalApplyNotification.class);
journalList.add(fInalApplyNotification);
}
journalRecyclerAdapterNotificationEmp = new JournalRecyclerAdapterNotificationEmp(getActivity(), journalList);
recyclerViewnotifyemp.setAdapter(journalRecyclerAdapterNotificationEmp);
journalRecyclerAdapterNotificationEmp.notifyDataSetChanged();
} else {
no_listnotifyemp.setVisibility(View.VISIBLE);
}
}
})
.addOnFailureListener(new OnFailureListener() {
#Override
public void onFailure(#NonNull Exception e) {
Log.e(TAG, "Received an exception " + e.getMessage() );
}
});
}
}
My Query
db.collectionGroup("Job Applicant Details").whereEqualTo("userId",currentUserId).whereEqualTo("empUID",fInalApplyNotification.getEmpUID())
Firebase firestore have mainly 2 types of queries
Simple queries
Compound queries
Simple queries have only where condition, so they don't need database indexes, like
FirebaseFirestore.getInstance().collection("cities")
.whereEqualTo("capital", true)
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
#Override
public void onComplete(#NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d(TAG, document.getId() + " => " + document.getData());
}
} else {
Log.d(TAG, "Error getting documents: ", task.getException());
}
}
});
Your query is compound query which has multiple Where queries chained together which needs composite index, you can either create composite index in firebase console or create composite index using error message, creating index using error message is easier one, which is printed in your log message, as it handles the fields and sorting order and directly creates index for you
As the exception states, you must create an index for the query you are performing.
FAILED_PRECONDITION: The query requires an index. You can create it here: {some link}
The link provided by the exception, when entered into a browser will load the Firebase Console with all the details you need to create the index needed for the query. So you just need to visit the link and follow the instructions.
I am using the below code for signing in my android app, but after the update of the android studio it is not working , it is not leading to the activity set for the successful signing in, I have updated all the dependencies of the firebase as as well. Similar thing is happening with signup activity as well
mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
#Override
public void onComplete(#NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
FirebaseUser user = mAuth.getCurrentUser();
// final String userId = user.getUid();
emailaddressChecker = user.isEmailVerified();
if(emailaddressChecker){
mAuth.getCurrentUser().getIdToken(true).addOnSuccessListener(new OnSuccessListener<GetTokenResult>() {
#Override
public void onSuccess(GetTokenResult getTokenResult) {
String tokenId1 = getTokenResult.getToken();
String current_id = mAuth.getUid();
Map tokenUpdate = new HashMap<>();
tokenUpdate.put("tokenId", tokenId1);
Log.d(TAG, " hello " );
db.collection("users").document(current_id).update(tokenUpdate).addOnSuccessListener(new OnSuccessListener<Void>() {
#Override
public void onSuccess(Void aVoid) {
SendUserToMainActivity();
//progressbar invisible;
}
}).addOnFailureListener(new OnFailureListener() {
#Override
public void onFailure(#NonNull Exception e) {
mAuth.signOut();
}
});
}
});
// SendUserToMainActivity();
loadingbar.dismiss();
}else {
Toast.makeText(SignInActivity.this, "Please Verify Your Email. Check Your Inbox.", Toast.LENGTH_SHORT).show();
// Toast.makeText(this, "", Toast.LENGTH_SHORT).show();
user.sendEmailVerification();
mAuth.signOut();
loadingbar.dismiss();
}
//Toast.makeText(SignInActivity.this, "Your Are logged in Successfully", Toast.LENGTH_SHORT).show();
//
}
else{
String message = task.getException().getMessage();
Toast.makeText(SignInActivity.this, "Error occured"+message, Toast.LENGTH_SHORT).show();
loadingbar.dismiss();
}
}
});
logcat details
2019-11-15 09:55:20.509 9452-9452/com.ramneekkashyap.blogapplication.blogapp2 D/InputTransport: Input channel destroyed: fd=79
2019-11-15 09:55:20.520 9452-9452/com.ramneekkashyap.blogapplication.blogapp2 D/ViewRootImpl#5313121[SignInActivity]: MSG_WINDOW_FOCUS_CHANGED 1 1
2019-11-15 09:55:20.521 9452-9452/com.ramneekkashyap.blogapplication.blogapp2 D/InputMethodManager: prepareNavigationBarInfo() DecorView#19549b0[SignInActivity]
2019-11-15 09:55:20.521 9452-9452/com.ramneekkashyap.blogapplication.blogapp2 D/InputMethodManager: getNavigationBarColor() -855310
2019-11-15 09:55:20.557 9452-9452/com.ramneekkashyap.blogapplication.blogapp2 E/ViewRootImpl: sendUserActionEvent() returned.
2019-11-15 09:55:21.124 9452-9536/com.ramneekkashyap.blogapplication.blogapp2 D/FirebaseAuth: Notifying id token listeners about user ( 18EM7y8fKlYOKQZJNo32Bm7vvvF2 ).
2019-11-15 09:55:21.139 9452-9452/com.ramneekkashyap.blogapplication.blogapp2 D/DocSnippets: hello
2019-11-15 09:55:21.331 9452-9609/com.ramneekkashyap.blogapplication.blogapp2 D/ConnectivityManager: requestNetwork; CallingUid : 10461, CallingPid : 9452
2019-11-15 09:55:21.337 9452-9611/com.ramneekkashyap.blogapplication.blogapp2 W/DynamiteModule: Local module descriptor class for providerinstaller not found.
2019-11-15 09:55:21.363 9452-9611/com.ramneekkashyap.blogapplication.blogapp2 I/DynamiteModule: Considering local module providerinstaller:0 and remote module providerinstaller:0
2019-11-15 09:55:21.364 9452-9611/com.ramneekkashyap.blogapplication.blogapp2 W/ProviderInstaller: Failed to load providerinstaller module: No acceptable module found. Local version is 0 and remote version is 0.
2019-11-15 09:55:21.395 9452-9611/com.ramneekkashyap.blogapplication.blogapp2 I/cation.blogapp: The ClassLoaderContext is a special shared library.
2019-11-15 09:55:21.401 9452-9611/com.ramneekkashyap.blogapplication.blogapp2 I/cation.blogapp: The ClassLoaderContext is a special shared library.
2019-11-15 09:55:21.407 9452-9611/com.ramneekkashyap.blogapplication.blogapp2 I/cation.blogapp: The ClassLoaderContext is a special shared library.
2019-11-15 09:55:21.453 9452-9611/com.ramneekkashyap.blogapplication.blogapp2 V/NativeCrypto: Registering com/google/android/gms/org/conscrypt/NativeCrypto's 286 native methods...
2019-11-15 09:55:21.508 9452-9611/com.ramneekkashyap.blogapplication.blogapp2 W/cation.blogapp: Accessing hidden method Ljava/security/spec/ECParameterSpec;->getCurveName()Ljava/lang/String; (light greylist, reflection)
2019-11-15 09:55:21.523 9452-9609/com.ramneekkashyap.blogapplication.blogapp2 W/cation.blogapp: Accessing hidden field Ljava/nio/Buffer;->address:J (light greylist, reflection)
2019-11-15 09:55:21.739 9452-9611/com.ramneekkashyap.blogapplication.blogapp2 D/NetworkSecurityConfig: No Network Security Config specified, using platform default
2019-11-15 09:55:21.743 9452-9611/com.ramneekkashyap.blogapplication.blogapp2 I/ProviderInstaller: Installed default security provider GmsCore_OpenSSL
2019-11-15 09:55:21.951 9452-9611/com.ramneekkashyap.blogapplication.blogapp2 D/ConnectivityManager: requestNetwork; CallingUid : 10461, CallingPid : 9452
2019-11-15 09:55:22.302 9452-9616/com.ramneekkashyap.blogapplication.blogapp2 D/NetworkManagementSocketTagger: tagSocket(79) with statsTag=0xffffffff, statsUid=-1
2019-11-15 09:55:22.361 9452-9616/com.ramneekkashyap.blogapplication.blogapp2 W/cation.blogapp: Accessing hidden field Ljava/net/Socket;->impl:Ljava/net/SocketImpl; (light greylist, reflection)
2019-11-15 09:55:22.364 9452-9616/com.ramneekkashyap.blogapplication.blogapp2 W/cation.blogapp: Accessing hidden method Ldalvik/system/CloseGuard;->get()Ldalvik/system/CloseGuard; (light greylist, linking)
2019-11-15 09:55:22.375 9452-9616/com.ramneekkashyap.blogapplication.blogapp2 W/cation.blogapp: Accessing hidden method Ldalvik/system/CloseGuard;->open(Ljava/lang/String;)V (light greylist, linking)
2019-11-15 09:55:22.385 9452-9616/com.ramneekkashyap.blogapplication.blogapp2 W/cation.blogapp: Accessing hidden field Ljava/io/FileDescriptor;->descriptor:I (light greylist, JNI)
2019-11-15 09:55:22.625 9452-9616/com.ramneekkashyap.blogapplication.blogapp2 W/cation.blogapp: Accessing hidden method Ljava/security/spec/ECParameterSpec;->setCurveName(Ljava/lang/String;)V (light greylist, reflection)
2019-11-15 09:55:22.773 9452-9616/com.ramneekkashyap.blogapplication.blogapp2 W/cation.blogapp: Accessing hidden method Ldalvik/system/BlockGuard;->getThreadPolicy()Ldalvik/system/BlockGuard$Policy; (light greylist, linking)
2019-11-15 09:55:22.773 9452-9616/com.ramneekkashyap.blogapplication.blogapp2 W/cation.blogapp: Accessing hidden method Ldalvik/system/BlockGuard$Policy;->onNetwork()V (light greylist, linking)
2019-11-15 09:55:25.900 9452-9609/com.ramneekkashyap.blogapplication.blogapp2 W/Firestore: (21.3.0) [Firestore]: Write failed at users/18EM7y8fKlYOKQZJNo32Bm7vvvF2: Status{code=PERMISSION_DENIED, description=Missing or insufficient permissions., cause=null}
2019-11-15 09:55:25.907 9452-9452/com.ramneekkashyap.blogapplication.blogapp2 D/FirebaseAuth: Notifying id token listeners about a sign-out event.
2019-11-15 09:55:25.907 9452-9452/com.ramneekkashyap.blogapplication.blogapp2 D/FirebaseAuth: Notifying auth state listeners about a sign-out event.
I think It's because either your device or emulator has an out-dated version of Google Play services.
Just update the Google Play services and it'll work.
You do not have the appropriate permissions. Check the "Email" permission in the Firebase console.
I am fairly new to android/java. I am trying to incorporate the example code for ADAL into my app, but when I call mAuthContext.aquireToken(), login prompt does not appear and I see errors in logcat about no activity for token. Is my activity getting destroyed for some reason?
I've searched but I'm not finding others that have this same kind of problem. I have a feeling I modified some code that is causing this and I cannot find what it is. I have tried different ways of referencing the activity in the first param of mAuthContext.acquireToken() but I don't think that is the problem. Any help is MUCH appreciated!
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setLogo(R.drawable.kclogo);
getSupportActionBar().setDisplayUseLogoEnabled(true);
scanButton = (Button) findViewById(R.id.scanButton);
signOutButton = (Button) findViewById(R.id.signoutButton);
signOutButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
onSignOutClicked();
}
});
scanButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
onScanClicked();
}
});
mAuthContext = new AuthenticationContext(getApplicationContext(), AUTHORITY, false);
/* Instantiate handler which can invoke interactive sign-in to get the Resource
* sIntSignInInvoked ensures interactive sign-in is invoked one at a time */
mAcquireTokenHandler = new Handler(Looper.getMainLooper()) {
#Override
public void handleMessage(Message msg) {
if (sIntSignInInvoked.compareAndSet(false, true)) {
try {
if (msg.what == MSG_INTERACTIVE_SIGN_IN_PROMPT_AUTO) {
Log.i(TAG, "$$$ Launching - MSG_INTERACTIVE_SIGN_IN_PROMPT_AUTO");
mAuthContext.acquireToken(getActivity(), RESOURCE_ID, CLIENT_ID, REDIRECT_URI, PromptBehavior.Auto, getAuthInteractiveCallback());
} else if (msg.what == MSG_INTERACTIVE_SIGN_IN_PROMPT_ALWAYS) {
mAuthContext.acquireToken(getActivity(), RESOURCE_ID, CLIENT_ID, REDIRECT_URI, PromptBehavior.Always, getAuthInteractiveCallback());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
};
/* ADAL Logging callback setup */
Logger.getInstance().setExternalLogger(new Logger.ILogger() {
#Override
public void Log(String tag, String message, String additionalMessage, Logger.LogLevel level, ADALError errorCode) {
// You can filter the logs depending on level or errorcode.
Log.d(TAG, message + " " + additionalMessage);
}
});
/*Attempt an acquireTokenSilent call to see if we're signed in*/
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
String userId = preferences.getString(USER_ID, "");
if(!TextUtils.isEmpty(userId)) {
Log.d(TAG,"Silent");
mAuthContext.acquireTokenSilentAsync(RESOURCE_ID, CLIENT_ID, userId, getAuthSilentCallback());
}
}
private void onScanClicked() {
mAcquireTokenHandler.sendEmptyMessage(MSG_INTERACTIVE_SIGN_IN_PROMPT_AUTO);
}
LOGCAT:
2018-12-19 14:07:06.702 15061-15061/com.solvednetworks.cptool I/MainActivity: $$$ Launching - MSG_INTERACTIVE_SIGN_IN_PROMPT_AUTO
2018-12-19 14:07:06.716 15061-15061/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:06-56b96149-f5c0-41d6-8195-baac64ea35a9-Sending async task from thread:15061 ver:1.14.1 null
2018-12-19 14:07:06.724 15061-15097/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:06-56b96149-f5c0-41d6-8195-baac64ea35a9-Running task in thread:15097 ver:1.14.1 null
2018-12-19 14:07:06.731 15061-15097/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:06-56b96149-f5c0-41d6-8195-baac64ea35a9-Broker auth is turned off or no valid broker is available on the device, cannot switch to broker. ver:1.14.1 null
2018-12-19 14:07:06.736 15061-15097/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:06-56b96149-f5c0-41d6-8195-baac64ea35a9-Try to acquire token silently, return valid AT or use RT in the cache. ver:1.14.1 null
2018-12-19 14:07:06.742 15061-15097/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:06-56b96149-f5c0-41d6-8195-baac64ea35a9-Try to silently get token from local cache. ver:1.14.1 null
2018-12-19 14:07:06.759 15061-15097/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:06-56b96149-f5c0-41d6-8195-baac64ea35a9-No access token exists. ver:1.14.1 null
2018-12-19 14:07:06.764 15061-15097/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:06-56b96149-f5c0-41d6-8195-baac64ea35a9-No valid access token exists, try with refresh token. ver:1.14.1 null
2018-12-19 14:07:06.785 15061-15097/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:06-56b96149-f5c0-41d6-8195-baac64ea35a9-Regular token cache entry does not exist, try with MRRT. ver:1.14.1 null
2018-12-19 14:07:06.800 15061-15097/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:06-56b96149-f5c0-41d6-8195-baac64ea35a9-MRRT token does not exist, try with FRT ver:1.14.1 null
2018-12-19 14:07:06.807 15061-15097/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:06-56b96149-f5c0-41d6-8195-baac64ea35a9-FRT cache item does not exist, fall back to try MRRT. ver:1.14.1 null
2018-12-19 14:07:06.811 15061-15097/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:06-56b96149-f5c0-41d6-8195-baac64ea35a9-Send request to use MRRT for new AT. ver:1.14.1 null
2018-12-19 14:07:06.816 15061-15097/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:06-56b96149-f5c0-41d6-8195-baac64ea35a9-MRRT does not exist, cannot proceed with MRRT for new AT. ver:1.14.1 null
2018-12-19 14:07:06.822 15061-15097/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:06-56b96149-f5c0-41d6-8195-baac64ea35a9-Broker auth is turned off or no valid broker is available on the device, cannot switch to broker. ver:1.14.1 null
2018-12-19 14:07:06.830 15061-15097/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:06-56b96149-f5c0-41d6-8195-baac64ea35a9-Put waiting request. requestId:93475433 CorrelationId: 56b96149-f5c0-41d6-8195-baac64ea35a9 ver:1.14.1 null
2018-12-19 14:07:06.837 15061-15097/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:06-56b96149-f5c0-41d6-8195-baac64ea35a9-Broker auth is turned off or no valid broker is available on the device, cannot switch to broker. ver:1.14.1 null
2018-12-19 14:07:06.843 15061-15097/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:06-56b96149-f5c0-41d6-8195-baac64ea35a9-Starting Authentication Activity for embedded flow. ver:1.14.1 null
2018-12-19 14:07:06.880 1918-2527/system_process I/ActivityManager: START u0 {cmp=com.solvednetworks.cptool/com.microsoft.aad.adal.AuthenticationActivity (has extras)} from uid 10092
2018-12-19 14:07:06.893 15061-15086/com.solvednetworks.cptool V/FA: Recording user engagement, ms: 1194
2018-12-19 14:07:06.901 15061-15061/com.solvednetworks.cptool W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy#ff0f877
2018-12-19 14:07:06.913 15061-15086/com.solvednetworks.cptool V/FA: Activity paused, time: 49751619
2018-12-19 14:07:06.926 15061-15061/com.solvednetworks.cptool V/FA: onActivityCreated
2018-12-19 14:07:06.939 15061-15086/com.solvednetworks.cptool D/FA: Logging event (FE): user_engagement(_e), Bundle[{firebase_event_origin(_o)=auto, engagement_time_msec(_et)=1194, firebase_screen_class(_sc)=MainActivity, firebase_screen_id(_si)=2466986703034345432}]
2018-12-19 14:07:07.049 2743-15104/com.google.android.gms V/FA-SVC: Event recorded: Event{appId='com.solvednetworks.cptool', name='user_engagement(_e)', params=Bundle[{firebase_event_origin(_o)=auto, engagement_time_msec(_et)=1194, firebase_screen_class(_sc)=MainActivity, firebase_screen_id(_si)=2466986703034345432}]}
2018-12-19 14:07:07.055 15061-15061/com.solvednetworks.cptool I/WebViewFactory: Loading com.android.chrome version 66.0.3359.158 (code 336015817)
2018-12-19 14:07:07.061 15061-15061/com.solvednetworks.cptool I/networks.cptoo: The ClassLoaderContext is a special shared library.
2018-12-19 14:07:07.100 15061-15061/com.solvednetworks.cptool I/cr_LibraryLoader: Time to load native libraries: 5 ms (timestamps 1821-1826)
2018-12-19 14:07:07.151 15061-15061/com.solvednetworks.cptool I/chromium: [INFO:library_loader_hooks.cc(36)] Chromium logging enabled: level = 0, default verbosity = 0
2018-12-19 14:07:07.152 15061-15061/com.solvednetworks.cptool I/cr_LibraryLoader: Expected native library version number "66.0.3359.158", actual native library version number "66.0.3359.158"
2018-12-19 14:07:07.187 15061-15110/com.solvednetworks.cptool W/cr_ChildProcLH: Create a new ChildConnectionAllocator with package name = com.android.chrome, sandboxed = true
2018-12-19 14:07:07.222 15061-15061/com.solvednetworks.cptool I/cr_BrowserStartup: Initializing chromium process, singleProcess=false
2018-12-19 14:07:07.224 1918-1946/system_process I/ActivityManager: Start proc 15112:com.android.chrome:sandboxed_process0/u0i12 for webview_service com.solvednetworks.cptool/org.chromium.content.app.SandboxedProcessService0
2018-12-19 14:07:07.225 15061-15061/com.solvednetworks.cptool I/cr_base: Android Locale: en_US requires .pak files: [en-GB.pak, en-US.pak]
2018-12-19 14:07:07.337 15061-15141/com.solvednetworks.cptool E/chromium: [ERROR:devtools_http_handler.cc(292)] Cannot start http server for devtools. Stop devtools.
2018-12-19 14:07:07.427 15061-15061/com.solvednetworks.cptool W/networks.cptoo: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker;->(Landroid/content/Context;I)V (light greylist, reflection)
2018-12-19 14:07:07.427 15061-15061/com.solvednetworks.cptool W/networks.cptoo: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker;->logEvent(Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;)V (light greylist, reflection)
2018-12-19 14:07:07.427 15061-15061/com.solvednetworks.cptool W/networks.cptoo: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionStarted(I)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; (light greylist, reflection)
2018-12-19 14:07:07.428 15061-15061/com.solvednetworks.cptool W/networks.cptoo: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionModified(II)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; (light greylist, reflection)
2018-12-19 14:07:07.428 15061-15061/com.solvednetworks.cptool W/networks.cptoo: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionModified(IILandroid/view/textclassifier/TextClassification;)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; (light greylist, reflection)
2018-12-19 14:07:07.428 15061-15061/com.solvednetworks.cptool W/networks.cptoo: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionModified(IILandroid/view/textclassifier/TextSelection;)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; (light greylist, reflection)
2018-12-19 14:07:07.428 15061-15061/com.solvednetworks.cptool W/networks.cptoo: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionAction(III)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; (light greylist, reflection)
2018-12-19 14:07:07.428 15061-15061/com.solvednetworks.cptool W/networks.cptoo: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionAction(IIILandroid/view/textclassifier/TextClassification;)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; (light greylist, reflection)
2018-12-19 14:07:07.458 15061-15061/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:07-56b96149-f5c0-41d6-8195-baac64ea35a9-AuthenticationActivity was created. ver:1.14.1 null
2018-12-19 14:07:07.515 15061-15061/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:07-56b96149-f5c0-41d6-8195-baac64ea35a9-Init broadcastReceiver with request. RequestId:93475433 ver:1.14.1 null
2018-12-19 14:07:07.524 15061-15061/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:07-56b96149-f5c0-41d6-8195-baac64ea35a9- ver:1.14.1 null
2018-12-19 14:07:07.530 15061-15061/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:07-56b96149-f5c0-41d6-8195-baac64ea35a9-Non-broker request for package com.solvednetworks.cptool ver:1.14.1 null
2018-12-19 14:07:07.536 15061-15061/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:07-56b96149-f5c0-41d6-8195-baac64ea35a9-Device info:9 GoogleAndroid SDK built for x86 ver:1.14.1 null
2018-12-19 14:07:07.561 15061-15061/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:07-56b96149-f5c0-41d6-8195-baac64ea35a9-Correlation id for request sent is:56b96149-f5c0-41d6-8195-baac64ea35a9 ver:1.14.1 null
2018-12-19 14:07:07.618 15061-15086/com.solvednetworks.cptool D/FA: Logging event (FE): screen_view(_vs), Bundle[{firebase_event_origin(_o)=auto, firebase_previous_class(_pc)=MainActivity, firebase_previous_id(_pi)=2466986703034345432, firebase_screen_class(_sc)=AuthenticationActivity, firebase_screen_id(_si)=2466986703034345433}]
2018-12-19 14:07:07.732 2743-15104/com.google.android.gms V/FA-SVC: Event recorded: Event{appId='com.solvednetworks.cptool', name='screen_view(_vs)', params=Bundle[{firebase_event_origin(_o)=auto, firebase_previous_class(_pc)=MainActivity, firebase_previous_id(_pi)=2466986703034345432, firebase_screen_class(_sc)=AuthenticationActivity, firebase_screen_id(_si)=2466986703034345433}]}
2018-12-19 14:07:07.732 15061-15086/com.solvednetworks.cptool V/FA: Activity resumed, time: 49752310
2018-12-19 14:07:07.851 15061-15061/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:07-56b96149-f5c0-41d6-8195-baac64ea35a9-Launching webview for acquiring auth code. ver:1.14.1 null
2018-12-19 14:07:07.873 15061-15131/com.solvednetworks.cptool W/cr_media: Requires BLUETOOTH permission
2018-12-19 14:07:07.885 15061-15098/com.solvednetworks.cptool D/EGL_emulation: eglMakeCurrent: 0xd2bcfa40: ver 3 0 (tinfo 0xd25ec380)
2018-12-19 14:07:07.929 15061-15150/com.solvednetworks.cptool D/EGL_emulation: eglCreateContext: 0xc92a7860: maj 3 min 0 rcv 3
2018-12-19 14:07:07.929 15061-15150/com.solvednetworks.cptool D/EGL_emulation: eglMakeCurrent: 0xc92a7860: ver 3 0 (tinfo 0xc7d922e0)
2018-12-19 14:07:07.936 1918-1954/system_process I/ActivityManager: Displayed com.solvednetworks.cptool/com.microsoft.aad.adal.AuthenticationActivity: +1s23ms
2018-12-19 14:07:08.062 15061-15150/com.solvednetworks.cptool W/VideoCapabilities: Unrecognized profile 4 for video/hevc
2018-12-19 14:07:08.119 15061-15061/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:08-56b96149-f5c0-41d6-8195-baac64ea35a9-Webview starts loading. ver:1.14.1 null
2018-12-19 14:07:08.130 15061-15150/com.solvednetworks.cptool I/VideoCapabilities: Unsupported profile 4 for video/mp4v-es
2018-12-19 14:07:08.133 15061-15061/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:08-56b96149-f5c0-41d6-8195-baac64ea35a9-DisplaySpinner:true showing:false ver:1.14.1 null
2018-12-19 14:07:08.170 15061-15150/com.solvednetworks.cptool W/cr_MediaCodecUtil: HW encoder for video/avc is not available on this device.
2018-12-19 14:07:08.185 15061-15150/com.solvednetworks.cptool D/EGL_emulation: eglCreateContext: 0xeccc3160: maj 3 min 0 rcv 3
2018-12-19 14:07:08.185 15061-15150/com.solvednetworks.cptool D/EGL_emulation: eglMakeCurrent: 0xeccc3160: ver 3 0 (tinfo 0xc7d922e0)
2018-12-19 14:07:08.504 1754-1754/? D/SurfaceFlinger: duplicate layer name: changing com.solvednetworks.cptool/com.microsoft.aad.adal.AuthenticationActivity to com.solvednetworks.cptool/com.microsoft.aad.adal.AuthenticationActivity#1
2018-12-19 14:07:08.597 15061-15098/com.solvednetworks.cptool D/EGL_emulation: eglMakeCurrent: 0xd2bcfa40: ver 3 0 (tinfo 0xd25ec380)
2018-12-19 14:07:08.728 15061-15061/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:08-56b96149-f5c0-41d6-8195-baac64ea35a9-Navigation is detected ver:1.14.1 null
2018-12-19 14:07:08.737 15061-15061/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:08-56b96149-f5c0-41d6-8195-baac64ea35a9-Navigation starts with the redirect uri. ver:1.14.1 null
2018-12-19 14:07:08.752 15061-15061/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:08-56b96149-f5c0-41d6-8195-baac64ea35a9-It is not a broker request ver:1.14.1 null
2018-12-19 14:07:08.759 15061-15061/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:08-56b96149-f5c0-41d6-8195-baac64ea35a9-Return To Caller:2003 ver:1.14.1 null
2018-12-19 14:07:08.767 15061-15061/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:08-56b96149-f5c0-41d6-8195-baac64ea35a9-DisplaySpinner:false showing:true ver:1.14.1 null
2018-12-19 14:07:08.781 15061-15098/com.solvednetworks.cptool D/EGL_emulation: eglMakeCurrent: 0xd2bcfa40: ver 3 0 (tinfo 0xd25ec380)
2018-12-19 14:07:08.792 1754-1754/? D/SurfaceFlinger: duplicate layer name: changing Surface(name=cf5a7cb com.solvednetworks.cptool/com.microsoft.aad.adal.AuthenticationActivity)/#0x60bde66 - animation-leash to Surface(name=cf5a7cb com.solvednetworks.cptool/com.microsoft.aad.adal.AuthenticationActivity)/#0x60bde66 - animation-leash#1
2018-12-19 14:07:08.802 15061-15061/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:08-56b96149-f5c0-41d6-8195-baac64ea35a9-Set request id related to response. REQUEST_ID for caller returned to:93475433 ver:1.14.1 null
2018-12-19 14:07:08.830 15061-15061/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:08-56b96149-f5c0-41d6-8195-baac64ea35a9-AuthenticationActivity onPause unregister receiver ver:1.14.1 null
2018-12-19 14:07:08.833 15061-15086/com.solvednetworks.cptool V/FA: Recording user engagement, ms: 1250
2018-12-19 14:07:08.835 15061-15061/com.solvednetworks.cptool D/MainActivity: 2018-12-19 21:07:08-56b96149-f5c0-41d6-8195-baac64ea35a9-Spinner at onPause will dismiss ver:1.14.1 null
2018-12-19 14:07:08.844 15061-15086/com.solvednetworks.cptool V/FA: Activity paused, time: 49753559
2018-12-19 14:07:08.875 15061-15086/com.solvednetworks.cptool D/FA: Logging event (FE): user_engagement(_e), Bundle[{firebase_event_origin(_o)=auto, engagement_time_msec(_et)=1250, firebase_screen_class(_sc)=AuthenticationActivity, firebase_screen_id(_si)=2466986703034345433}]
2018-12-19 14:07:08.974 15061-15061/com.solvednetworks.cptool W/networks.cptoo: Attempt to remove non-JNI local reference, dumping thread
2018-12-19 14:07:08.987 1754-1940/? W/SurfaceFlinger: Attempting to set client state on removed layer: com.solvednetworks.cptool/com.microsoft.aad.adal.AuthenticationActivity#1
2018-12-19 14:07:08.987 1754-1940/? W/SurfaceFlinger: Attempting to destroy on removed layer: com.solvednetworks.cptool/com.microsoft.aad.adal.AuthenticationActivity#1
2018-12-19 14:07:08.987 2743-15104/com.google.android.gms V/FA-SVC: Event recorded: Event{appId='com.solvednetworks.cptool', name='user_engagement(_e)', params=Bundle[{firebase_event_origin(_o)=auto, engagement_time_msec(_et)=1250, firebase_screen_class(_sc)=AuthenticationActivity, firebase_screen_id(_si)=2466986703034345433}]}
2018-12-19 14:07:08.989 15061-15098/com.solvednetworks.cptool D/EGL_emulation: eglMakeCurrent: 0xd2bcfa40: ver 3 0 (tinfo 0xd25ec380)
2018-12-19 14:07:09.032 15061-15086/com.solvednetworks.cptool D/FA: Logging event (FE): screen_view(_vs), Bundle[{firebase_event_origin(_o)=auto, firebase_previous_class(_pc)=AuthenticationActivity, firebase_previous_id(_pi)=2466986703034345433, firebase_screen_class(_sc)=MainActivity, firebase_screen_id(_si)=2466986703034345432}]
2018-12-19 14:07:09.123 15061-15086/com.solvednetworks.cptool V/FA: Activity resumed, time: 49753582
2018-12-19 14:07:09.128 2743-15104/com.google.android.gms V/FA-SVC: Event recorded: Event{appId='com.solvednetworks.cptool', name='screen_view(_vs)', params=Bundle[{firebase_event_origin(_o)=auto, firebase_previous_class(_pc)=AuthenticationActivity, firebase_previous_id(_pi)=2466986703034345433, firebase_screen_class(_sc)=MainActivity, firebase_screen_id(_si)=2466986703034345432}]}
2018-12-19 14:07:09.150 15061-15098/com.solvednetworks.cptool D/EGL_emulation: eglMakeCurrent: 0xd2bcfa40: ver 3 0 (tinfo 0xd25ec380)
2018-12-19 14:07:14.126 15061-15086/com.solvednetworks.cptool V/FA: Inactivity, disconnecting from the service