Android 如何在我的代码中获取所有注册用户,而不仅仅是Firebase上的联系人列表
我有一个FetchMyUsersService类,这个类只获取联系人列表中的用户,我如何获取所有Firebase用户?请帮忙 这是我的密码 这不是我写的 我有更多的类,但我认为这是我在这个类中的解决方案,如果不只是告诉我我在这个项目上共享另一个类的话Android 如何在我的代码中获取所有注册用户,而不仅仅是Firebase上的联系人列表,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我有一个FetchMyUsersService类,这个类只获取联系人列表中的用户,我如何获取所有Firebase用户?请帮忙 这是我的密码 这不是我写的 我有更多的类,但我认为这是我在这个类中的解决方案,如果不只是告诉我我在这个项目上共享另一个类的话 public class FetchMyUsersService extends IntentService { private static String EXTRA_PARAM1 = "my_id"; private stati
public class FetchMyUsersService extends IntentService {
private static String EXTRA_PARAM1 = "my_id";
private static String EXTRA_PARAM2 = "token";
private HashMap<String, Contact> myContacts;
private ArrayList<User> myUsers;
private String myId, idToken;
public static boolean STARTED = false;
public FetchMyUsersService() {
super("FetchMyUsersService");
}
public static void startMyUsersService(Context context, String myId, String idToken) {
Intent intent = new Intent(context, FetchMyUsersService.class);
intent.putExtra(EXTRA_PARAM1, myId);
intent.putExtra(EXTRA_PARAM2, idToken);
context.startService(intent);
}
@Override
protected void onHandleIntent(Intent intent) {
STARTED = true;
myId = intent.getStringExtra(EXTRA_PARAM1);
idToken = intent.getStringExtra(EXTRA_PARAM2);
fetchMyContacts();
broadcastMyContacts();
fetchMyUsers();
broadcastMyUsers();
STARTED = false;
}
private void broadcastMyUsers() {
if (this.myUsers != null) {
Intent intent = new Intent(Helper.BROADCAST_MY_USERS);
intent.putParcelableArrayListExtra("data", this.myUsers);
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);
localBroadcastManager.sendBroadcast(intent);
}
}
private void fetchMyUsers() {
myUsers = new ArrayList<>();
try {
StringBuilder response = new StringBuilder();
URL url = new URL(FirebaseDatabase.getInstance().getReference().toString() + "/" + Helper.REF_USERS + ".json?auth=" + idToken);
URLConnection conn = url.openConnection();
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
response.append(line).append(" ");
}
rd.close();
JSONObject responseObject = new JSONObject(response.toString());
Gson gson = new GsonBuilder().create();
Iterator<String> keys = responseObject.keys();
while (keys.hasNext()) {
String key = keys.next();
JSONObject innerJObject = responseObject.getJSONObject(key);
User user = gson.fromJson(innerJObject.toString(), User.class);
if (User.validate(user) && !user.getId().equals(myId)) {
String idTrim = Helper.getEndTrim(user.getId());
if (myContacts.containsKey(idTrim)) {
user.setNameInPhone(myContacts.get(idTrim).getName());
myUsers.add(user);
}
}
if (myUsers.size() == myContacts.size()) {
break;
}
}
Collections.sort(myUsers, new Comparator<User>() {
@Override
public int compare(User user1, User user2) {
return user1.getNameToDisplay().compareToIgnoreCase(user2.getNameToDisplay());
}
});
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}
private void broadcastMyContacts() {
if (this.myContacts != null) {
new Helper(this).setMyUsersNameCache(myContacts);
Intent intent = new Intent(Helper.BROADCAST_MY_CONTACTS);
intent.putExtra("data", this.myContacts);
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);
localBroadcastManager.sendBroadcast(intent);
}
}
private void fetchMyContacts() {
myContacts = new HashMap<>();
Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
if (cursor != null && !cursor.isClosed()) {
cursor.getCount();
while (cursor.moveToNext()) {
int hasPhoneNumber = cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
if (hasPhoneNumber == 1) {
String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)).replaceAll("\\s+", "");
String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME_PRIMARY));
if (Patterns.PHONE.matcher(number).matches()) {
boolean hasPlus = String.valueOf(number.charAt(0)).equals("+");
number = number.replaceAll("[\\D]", "");
if (hasPlus) {
number = "+" + number;
}
Contact contact = new Contact(number, name);
String endTrim = Helper.getEndTrim(contact.getPhoneNumber());
if (!myContacts.containsKey(endTrim))
myContacts.put(endTrim, contact);
}
}
}
cursor.close();
}
}
}
公共类FetchMyUsersService扩展了IntentService{
私有静态字符串EXTRA_PARAM1=“my_id”;
私有静态字符串EXTRA_PARAM2=“令牌”;
私有HashMap myContacts;
私有ArrayList myUsers;
私有字符串myId,idToken;
公共静态布尔启动=false;
公共FetchMyUsersService(){
超级(“FetchMyUsersService”);
}
公共静态void startMyUsersService(上下文上下文、字符串myId、字符串idToken){
Intent Intent=新的Intent(上下文,FetchMyUsersService.class);
意向。额外(额外参数1,myId);
intent.putExtra(额外参数2,idToken);
上下文。startService(意图);
}
@凌驾
受保护的手部内容无效(意图){
开始=真;
myId=intent.getStringExtra(额外参数1);
idToken=intent.getStringExtra(额外参数2);
fetchMyContacts();
广播mycontacts();
fetchMyUsers();
广播MyUsers();
开始=错误;
}
私有void broadcastMyUsers(){
if(this.myUsers!=null){
意向意向=新意向(Helper.BROADCAST\u MY\u用户);
intent.putParcelableArrayListExtra(“数据”,this.myUsers);
LocalBroadcastManager LocalBroadcastManager=LocalBroadcastManager.getInstance(this);
localBroadcastManager.sendBroadcast(intent);
}
}
私有void fetchMyUsers(){
myUsers=newarraylist();
试一试{
StringBuilder响应=新建StringBuilder();
URL URL=新URL(FirebaseDatabase.getInstance().getReference().toString()+“/”+Helper.REF_USERS+”.json?auth=“+idToken”);
URLConnection conn=url.openConnection();
BufferedReader rd=新的BufferedReader(新的InputStreamReader(conn.getInputStream());
弦线;
而((line=rd.readLine())!=null){
响应。追加(行)。追加(“”);
}
rd.close();
JSONObject responseObject=新的JSONObject(response.toString());
Gson Gson=new GsonBuilder().create();
迭代器键=responseObject.keys();
while(keys.hasNext()){
String key=keys.next();
JSONObject innerJObject=responseObject.getJSONObject(键);
User User=gson.fromJson(innerJObject.toString(),User.class);
if(User.validate(User)&&!User.getId().equals(myId)){
字符串idTrim=Helper.getEndTrim(user.getId());
if(myContacts.containsKey(idTrim)){
user.setNameInPhone(myContacts.get(idTrim.getName());
添加(用户);
}
}
if(myUsers.size()==myContacts.size()){
打破
}
}
Collections.sort(myUsers,newcomparator(){
@凌驾
公共int比较(用户user1、用户user2){
返回user1.getNameToDisplay().compareToIgnoreCase(user2.getNameToDisplay());
}
});
}捕获(IOE异常){
e、 printStackTrace();
}捕获(JSONException e){
e、 printStackTrace();
}
}
私有无效广播MyContacts(){
如果(this.myContacts!=null){
新助手(this).setMyUsersNameCache(myContacts);
意向意向=新意向(助手.广播我的联系人);
intent.putExtra(“数据”,this.myContacts);
LocalBroadcastManager LocalBroadcastManager=LocalBroadcastManager.getInstance(this);
localBroadcastManager.sendBroadcast(intent);
}
}
私有void fetchMyContacts(){
myContacts=newhashmap();
Cursor Cursor=getContentResolver().query(ContactsContract.CommonDataTypes.Phone.CONTENT\u URI,null,null,null);
if(cursor!=null&!cursor.isClosed()){
cursor.getCount();
while(cursor.moveToNext()){
int hasPhoneNumber=cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
如果(hasPhoneNumber==1){
字符串编号=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataTypes.Phone.number)).replaceAll(“\\s+”,”);
字符串名称=cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_name_PRIMARY));
if(Patterns.PHONE.matcher(number.matches()){
布尔hasPlus=String.valueOf(number.charAt(0))。等于(“+”;
number=number.replaceAll(“[\\D]”,“”);
如果(hasPlus){
number=“+”+数字;
}
联系人=新联系人(号码、姓名);
字符串endTrim=Helper.getEndTrim(contact.getPhoneNumber());
如果(!myContacts.containsKey(endTrim))
myContacts.put(末端修剪,接触);
}
}
}
cursor.close();
}
}
}
请尝试更改fetchMyUsers()的代码,如下所示
private void fetchMyUsers() {
myUsers = new ArrayList<>();
try {
StringBuilder response = new StringBuilder();
URL url = new URL(FirebaseDatabase.getInstance().getReference().toString() + "/" + Helper.REF_USERS + ".json?auth=" + idToken);
URLConnection conn = url.openConnection();
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
response.append(line).append(" ");
}
rd.close();
JSONObject responseObject = new JSONObject(response.toString());
Gson gson = new GsonBuilder().create();
Iterator<String> keys = responseObject.keys();
while (keys.hasNext()) {
String key = keys.next();
JSONObject innerJObject = responseObject.getJSONObject(key);
User user = gson.fromJson(innerJObject.toString(), User.class);
myUsers.add(user);
if (myUsers.size() == myContacts.size()) {
break;
}
}
Collections.sort(myUsers, new Comparator<User>() {
@Override
public int compare(User user1, User user2) {
return user1.getNameToDisplay().compareToIgnoreCase(user2.getNameToDisplay());
}
});
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}
private void fetchMyUsers(){
myUsers=newarraylist();
试一试{
StringBuilder响应=新建StringBuilder();
URL URL=新URL(FirebaseDatabase.getInstance().getReference().toString()+“/”+Helper.REF_USERS+”.json?aut