package com.alrubaye.mytracker; import android.*; import android.Manifest; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.database.Cursor; import android.location.LocationManager; import android.os.Build; import android.provider.ContactsContract; import android.support.v4.app.ActivityCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import com.google.firebase.database.DataSnapshot; import com.google.firebase.database.DatabaseError; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; import com.google.firebase.database.ValueEventListener; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; public class MainActivity extends AppCompatActivity { ArrayList<AdapterItems> listnewsData = new ArrayList<AdapterItems>(); MyCustomAdapter myadapter; DatabaseReference databaseReference; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); GlobalInfo globalInfo= new GlobalInfo(this); globalInfo.LoadData(); databaseReference= FirebaseDatabase.getInstance().getReference(); CheckUserPermsions(); myadapter=new MyCustomAdapter(listnewsData); ListView lsNews=(ListView)findViewById(R.id.listView); lsNews.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { AdapterItems adapterItems=listnewsData.get(position); GlobalInfo.UpdatesInfo(adapterItems.PhoneNumber); Intent intent= new Intent(getApplicationContext(),MapsActivity.class); intent.putExtra("PhoneNumber",adapterItems.PhoneNumber); startActivity(intent); } }); lsNews.setAdapter(myadapter);//intisal with data } @Override public void onResume(){ super.onResume(); Refesh(); } void Refesh(){ listnewsData.clear(); databaseReference.child("Users").child(GlobalInfo.PhoneNumber). child("Finders").addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { Map<String, Object> td = (HashMap<String, Object>) dataSnapshot.getValue(); listnewsData.clear(); if (td == null) //no one allow you to find him { listnewsData.add(new AdapterItems("NoTicket", "no_desc")); myadapter.notifyDataSetChanged(); return; } // List<Object> values = td.values(); // get all contact to list ArrayList<AdapterItems> list_contact = new ArrayList<AdapterItems>(); Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null); while (cursor.moveToNext()) { String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); String phoneNumber = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); list_contact.add(new AdapterItems( name,GlobalInfo.FormatPhoneNumber(phoneNumber) )); } // if the name is save chane his text // case who find me String tinfo; for ( String Numbers : td.keySet()) { for (AdapterItems cs : list_contact) { //IsFound = SettingSaved.WhoIFindIN.get(cs.Detals); // for case who i could find list if (cs.PhoneNumber.length() > 0) if (Numbers.contains(cs.PhoneNumber)) { listnewsData.add(new AdapterItems(cs.UserName, cs.PhoneNumber)); break; } } } myadapter.notifyDataSetChanged(); } @Override public void onCancelled(DatabaseError error) { // Failed to read value // Log.w(TAG, "Failed to read value.", error.toException()); } }); myadapter.notifyDataSetChanged(); } void CheckUserPermsions(){ if ( Build.VERSION.SDK_INT >= 23){ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED ){ requestPermissions(new String[]{ android.Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION }, REQUEST_CODE_ASK_PERMISSIONS); return ; } } StartServices(); } //get acces to location permsion final private int REQUEST_CODE_ASK_PERMISSIONS = 123; @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { case REQUEST_CODE_ASK_PERMISSIONS: if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { StartServices(); } else { // Permission Denied Toast.makeText( this,"your message" , Toast.LENGTH_SHORT) .show(); } break; default: super.onRequestPermissionsResult(requestCode, permissions, grantResults); } } void StartServices(){ //start location track if (!MyServie.IsRunning){ Intent intent=new Intent(getBaseContext(),MyServie.class); startService(intent); } } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main_menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle item selection switch (item.getItemId()) { case R.id.addtracker: Intent intent=new Intent(this, MyTrackers.class); startActivity(intent); return true; case R.id.help: return true; default: return super.onOptionsItemSelected(item); } } private class MyCustomAdapter extends BaseAdapter { public ArrayList<AdapterItems> listnewsDataAdpater ; public MyCustomAdapter(ArrayList<AdapterItems> listnewsDataAdpater) { this.listnewsDataAdpater=listnewsDataAdpater; } @Override public int getCount() { return listnewsDataAdpater.size(); } @Override public String getItem(int position) { return null; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater mInflater = getLayoutInflater(); final AdapterItems s = listnewsDataAdpater.get(position); if (s.UserName.equals("NoTicket")) { View myView = mInflater.inflate(R.layout.news_ticket_no_news, null); return myView; } else { View myView = mInflater.inflate(R.layout.single_row_conact, null); TextView tv_user_name = (TextView) myView.findViewById(R.id.tv_user_name); tv_user_name.setText(s.UserName); TextView tv_phone = (TextView) myView.findViewById(R.id.tv_phone); tv_phone.setText(s.PhoneNumber); return myView; } } } }