zoukankan      html  css  js  c++  java
  • 开发冲刺九

    今天基础功能就告一段落了完成了通过二维码扫描加好友,以及设置隐私是否可以通过通讯录就好友

    ContactsFriendActivity.java
    package com.example.meet.UI;
    
    import android.database.Cursor;
    import android.os.Bundle;
    import android.provider.ContactsContract;
    import android.view.View;
    
    import androidx.appcompat.app.AppCompatActivity;
    import androidx.recyclerview.widget.DividerItemDecoration;
    import androidx.recyclerview.widget.LinearLayoutManager;
    import androidx.recyclerview.widget.RecyclerView;
    
    import com.example.framework.adapter.CommonAdapter;
    import com.example.framework.adapter.CommonViewHolder;
    import com.example.framework.base.BaseBackActivity;
    import com.example.framework.bmob.BmobManager;
    import com.example.framework.bmob.MyMeetUser;
    import com.example.framework.bmob.PrivateSet;
    import com.example.framework.utils.CommonUtils;
    import com.example.framework.utils.LogUtils;
    import com.example.meet.R;
    import com.example.meet.adapter.AddFriendAdapter;
    import com.example.meet.model.AddFriendModel;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    
    import io.reactivex.Observable;
    import cn.bmob.v3.exception.BmobException;
    import cn.bmob.v3.listener.FindListener;
    import io.reactivex.ObservableEmitter;
    import io.reactivex.ObservableOnSubscribe;
    import io.reactivex.android.schedulers.AndroidSchedulers;
    import io.reactivex.disposables.Disposable;
    import io.reactivex.functions.Consumer;
    import io.reactivex.internal.operators.observable.ObservableSubscribeOn;
    import io.reactivex.schedulers.Schedulers;
    
    public class ContactsFriendActivity extends BaseBackActivity {
    
        private RecyclerView mContactView;
        private Map<String, String> contactsMap = new HashMap<>();
        private CommonAdapter<AddFriendModel> adapter;
        private List<AddFriendModel> modelList = new ArrayList<>();
        private Disposable disposable;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_contact_friend);
            initView();
        }
    
        private void initView() {
            mContactView = (RecyclerView) findViewById(R.id.mContactView);
            mContactView.setLayoutManager(new LinearLayoutManager(this));
            mContactView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
            adapter = new CommonAdapter<>(modelList, new CommonAdapter.OnBindDataListener<AddFriendModel>() {
                @Override
                public void onBindViewHolder(final AddFriendModel model, CommonViewHolder viewHolder, int type, int position) {
                    //加载图片
                    viewHolder.setImageUrl(ContactsFriendActivity.this, R.id.iv_photo, model.getPhoto());
                    //设置性别
                    viewHolder.setImageResource(R.id.iv_sex
                            , model.isSex() ? R.drawable.img_boy_icon : R.drawable.img_girl_icon);
                    //设置昵称
                    viewHolder.setText(R.id.tv_nickname, model.getNickName());
                    //年龄
                    viewHolder.setText(R.id.tv_age, model.getAge() + "岁");
                    //描述
                    viewHolder.setText(R.id.tv_desc, model.getDesc());
                    viewHolder.setLinearLayoutVisibility(R.id.ll_contact_info, View.VISIBLE);
                    viewHolder.setText(R.id.tv_contact_name, "姓名:" + model.getContactName());
                    viewHolder.setText(R.id.tv_contact_phone, "号码:" + model.getContactPhone());
                    viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            UserInfoActivity.startActivity(ContactsFriendActivity.this
                                    , model.getUserId());
                        }
                    });
                }
    
                @Override
                public int getLayoutId(int type) {
                    return R.layout.layout_search_user_item;
                }
            });
    
            mContactView.setAdapter(adapter);
            getContacts();
            getUser();
        }
    
        /**
         * 添加匹配到的用户
         */
        private void getUser() {
            /*
            *
            *
            * */
            
            disposable=Observable.create(new ObservableOnSubscribe<List<PrivateSet>>() {
                @Override
                public void subscribe(final ObservableEmitter<List<PrivateSet>> emitter) throws Exception {
                    getContacts();
                    BmobManager.getInstance().queryPrivateSet(new FindListener<PrivateSet>() {
                        @Override
                        public void done(List<PrivateSet> list, BmobException e) {
                            if(e==null)
                            {
                                emitter.onNext(list);
                                emitter.onComplete();
                            }
                        }
                    });
                }
            }).subscribeOn(Schedulers.newThread())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(new Consumer<List<PrivateSet>>() {
                        @Override
                        public void accept(List<PrivateSet> privateSets) throws Exception {
                            fixprivateSets(privateSets);
    
                        }
                    });
                    
                    
                    
                    
    
    
        }
        /*
        * 过滤
        * */
        private void fixprivateSets(List<PrivateSet> privateSets) {
            List<String> userListPhone=new ArrayList<>();
            for(int  i =0;i<privateSets.size();i++)
            {
                PrivateSet sets=privateSets.get(i);
                String phone=sets.getPhone();
                userListPhone.add(phone);
            }
            if (contactsMap.size() > 0) {
                for (final Map.Entry<String, String> entry : contactsMap.entrySet()) {
    
                    //过滤
                    if(userListPhone.contains(entry.getValue()))
                    {
                        return;
                    }
                    BmobManager.getInstance().queryUserByPhone(entry.getValue(), new FindListener<MyMeetUser>() {
                        @Override
                        public void done(List<MyMeetUser> object, BmobException e) {
                            if (e == null) {
                                if (CommonUtils.isEmpty(object)) {
                                    MyMeetUser myMeetUser = object.get(0);
                                    addContent(myMeetUser, entry.getKey(), entry.getValue());
                                    adapter.notifyDataSetChanged();
                                }
                            }
                        }
                    });
                }
            }
    
        }
    
        /**
         * 获取通讯录联系人
         */
        private void getContacts() {
            Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                    null, null, null, null);
            String phone;
            String name;
            while (cursor.moveToNext()) {
                name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                phone = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                contactsMap.put(name, phone);
            }
        }
    
        /**
         * 添加用户信息数据
         */
        private void addContent(MyMeetUser user, String name, String phone) {
            AddFriendModel model = new AddFriendModel();
            model.setType(AddFriendAdapter.TYPE_CONTENT);
            model.setUserId(user.getObjectId());
            model.setAge(user.getAge());
            model.setDesc(user.getDesc());
            model.setSex(user.isSex());
            model.setPhoto(user.getPhoto());
            model.setNickName(user.getNickName());
            model.setContact(true);
            model.setContactName(name);
            model.setContactPhone(phone);
            modelList.add(model);
        }
        @Override
        public void onDestroy() {
    
            super.onDestroy();
            if(disposable!=null){
                if(disposable.isDisposed())
                {
                    disposable.dispose();
                }
            }
        }
    }

    今天我们将代码整合到了一起,并且做了一些测试

    在自己设置了隐私之后自己的朋友就不能通过手机通讯录添加自己,二维码扫描也正常,消息广场测试正常,即时添加好友聊天正常。

    目前差不多已经完成了第一阶段的冲刺,这是第一次的整合,明天继续冲刺其他功能

  • 相关阅读:
    JavaScript作用域闭包(你不知道的JavaScript)
    Python笔记---错误笔记
    Go语言核心之美 1.5-作用域
    Android经常使用自己定义控件(二)
    Java开发者最经常使用19个Linux命令
    Python: scikit-image binary descriptor
    android 自己定义状态栏和导航栏分析与实现
    程序猿增加新团队的那些坑
    LeetCode 06 ZigZag Conversion
    【UWP通用应用开发】控件、应用栏
  • 原文地址:https://www.cnblogs.com/yizhixiaozhu/p/12782961.html
Copyright © 2011-2022 走看看