1

I have an android app with firebase as database.I am using Firebase token for authentication.so.,the app session gets expired in each 1hr.so i want to logout and goto signin activity from home when token expired.How can i do it in my app.?

public class FragmentHome extends Fragment {
 private SearchView search;
 View v;
 DatabaseReference dataRef;
 private FirebaseListAdapter < String > firebaseListAdapter;
 ListView mListView;
 private TextView text;
 ArrayList < String > city = new ArrayList < String > ();
 private int i = 0;
 private String data, val,
 var;
 ArrayAdapter < String > adapter;
 ProgressBar progressBar;
 @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable final Bundle savedInstanceState) {
  v = inflater.inflate(R.layout.activity_fragment_home, container, false);
  if (container != null) {
   container.removeAllViews();
  }
  return v;
 }
 @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
  super.onViewCreated(view, savedInstanceState);
  progressBar = (ProgressBar) v.findViewById(R.id.search_pro);
  search = (SearchView) v.findViewById(R.id.search);
  search.onActionViewExpanded();
  search.setIconified(false);
  search.setInputType(InputType.TYPE_NULL);
  search.setQueryHint("Search Docter By City Or Department");
  mListView = (ListView) v.findViewById(R.id.mList);
  mListView.setVisibility(View.INVISIBLE);
  dataRef = FirebaseDatabase.getInstance().getReference().child("Docters");
  adapter = new ArrayAdapter < String > (getActivity(), android.R.layout.simple_list_item_1, city);
  mListView.setAdapter(adapter);
  adapter.notifyDataSetChanged();
  dataRef.addChildEventListener(new ChildEventListener() {
   @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) {
    data = dataSnapshot.child("city").getValue(String.class);
    val = dataSnapshot.child("department").getValue(String.class);
    if (!city.contains(data)) {
     city.add(data);
    }
    if (!city.contains(val)) {
     city.add(val);
    }
    search.setInputType(InputType.TYPE_CLASS_TEXT);
    progressBar.setVisibility(View.GONE);
    adapter.notifyDataSetChanged();
   }
   @Override public void onChildChanged(DataSnapshot dataSnapshot, String s) {
    data = dataSnapshot.child("city").getValue(String.class);
    val = dataSnapshot.child("department").getValue(String.class);
    city.add(data);
    city.add(val);
    city.add(var);
    adapter.notifyDataSetChanged();
   }
   @Override public void onChildRemoved(DataSnapshot dataSnapshot) {}
   @Override public void onChildMoved(DataSnapshot dataSnapshot, String s) {}
   @Override public void onCancelled(DatabaseError databaseError) {}
  });
  search.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
   @Override public boolean onQueryTextSubmit(String text) {
    return false;
   }
   @Override public boolean onQueryTextChange(String text) {
    if (!text.isEmpty()) {
     adapter.notifyDataSetChanged();
     mListView.setVisibility(View.VISIBLE);
     adapter.getFilter().filter(text);
    } else {
     mListView.setVisibility(View.INVISIBLE);
    }
    return false;
   }
  });
  mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
   @Override public void onItemClick(AdapterView < ? > parent, View view, int position, long id) {
    String itemRef = (String) adapter.getItem(position);
    search.setVisibility(View.INVISIBLE);
    mListView.setVisibility(View.INVISIBLE);
    FragmentTransaction ft = getChildFragmentManager().beginTransaction();
    DocterList fragment = new DocterList();
    Bundle item = new Bundle();
    item.putString("item", itemRef);
    fragment.setArguments(item);
    ft.replace(R.id.activity_fragment_home, fragment);
    ft.addToBackStack(null);
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
    ft.commit();
   }
  });
 }
Frank van Puffelen
  • 565,676
  • 79
  • 828
  • 807
Suhail
  • 59
  • 7
  • I'm not really sure what you're trying to accomplish, but Firebase Authentication automatically refreshes its token every hours (well, more like every 55 minutes). You don't need to do anything for that. – Frank van Puffelen Sep 23 '17 at 18:16
  • I want to logout at the time.ie.,after 1hr.How can i do it.? – Suhail Sep 24 '17 at 02:42
  • 1
    I'd just use regular Android task scheduling for that, e.g. [this answer](https://stackoverflow.com/questions/25375968/android-execute-a-function-after-1-hour) or [this one](https://stackoverflow.com/questions/19652778/running-a-task-every-few-hours) and then call [signOut](https://firebase.google.com/docs/reference/android/com/google/firebase/auth/FirebaseAuth.html#signOut()). – Frank van Puffelen Sep 24 '17 at 05:50

0 Answers0