Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在我的代码中获取所有注册用户,而不仅仅是Firebase上的联系人列表_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Android 如何在我的代码中获取所有注册用户,而不仅仅是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

我有一个FetchMyUsersService类,这个类只获取联系人列表中的用户,我如何获取所有Firebase用户?请帮忙

这是我的密码

这不是我写的

我有更多的类,但我认为这是我在这个类中的解决方案,如果不只是告诉我我在这个项目上共享另一个类的话

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