视频直播系统源码,Android 读取联系人列表
视频直播系统源码,Android 读取联系人列表
1、activity_main.xml
只有一个listview列表项用于存储从手机联系人中获取的数据。
1 | <br><?xml version= "1.0" encoding= "utf-8" ?><br><LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android" <br> xmlns:app= "http://schemas.android.com/apk/res-auto" <br> xmlns:tools= "http://schemas.android.com/tools" <br> android:layout_width= "match_parent" <br> android:layout_height= "match_parent" <br> tools:context= ".MainActivity" ><br> <ListView<br> android:id= "@+id/listview" <br> android:layout_width= "match_parent" <br> android:layout_height= "match_parent" /><br></LinearLayout><br> |
2、MainActivity.java
在Android6.0及以上的版本中,读取联系人信息属于危险权限,需要进行静态权限声明申请
动态申请读取联系人权限,如果没有权限就弹出权限申请对话框
动态权限申请回调方法,当用户授权时,同样调用方法获取联系人
读取联系人信息readContact()
将查询结果遍历为集合
1 | public class MainActivity extends AppCompatActivity {<br> private ListView listView;<br> private ArrayAdapter adapter;<br> private ArrayList<String>list;<br> @Override<br> protected void onCreate(Bundle savedInstanceState) {<br> super.onCreate(savedInstanceState);<br> setContentView(R.layout.activity_main);<br> //初始化控件<br> listView=findViewById(R.id.listview);<br> list=new ArrayList<>();<br> adapter=new ArrayAdapter(this, android.R.layout.simple_list_item_1,list);<br> listView.setAdapter(adapter);<br> //动态申请读取联系人权限,如果没有权限就弹出权限申请对话框<br> if(ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS)!= PackageManager.PERMISSION_GRANTED){<br> ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_CONTACTS},1);<br> }else {<br> readContact();<br> }<br> }<br> @Override<br> public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {<br> super.onRequestPermissionsResult(requestCode, permissions, grantResults);<br> //动态权限申请回调方法,当用户授权时,同样调用方法获取联系人<br> if(requestCode==1){<br> if(grantResults!=null&&grantResults[0]==PackageManager.PERMISSION_GRANTED){<br> readContact();<br> }<br> }<br> }<br> //读取联系人信息<br> public void readContact(){<br> //联系人应用的uri常量<br> //Uri指明3件事: content:拿内容,包名:到哪个应用中拿,表名:拿哪个数据<br> Uri uri= ContactsContract.CommonDataKinds.Phone.CONTENT_URI;<br> //1.获取ContentResolver<br> ContentResolver contentResolver=getContentResolver();<br> //2.查询联系人数据<br> Cursor cursor=contentResolver.query(uri,null,null,null,null);<br> //3.通过游标遍历数据<br> list=convertCursor(cursor);<br> //4.通知adapter数据集发生变化,需要刷新<br> adapter.notifyDataSetChanged();<br> //5.关闭游标<br> cursor.close();<br> }<br> //将查询结果遍历为集合<br> public ArrayList<String> convertCursor(Cursor cursor){<br> String name=ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME;<br> String phone=ContactsContract.CommonDataKinds.Phone.NUMBER;<br> if (cursor!=null&&cursor.moveToFirst()){<br> do {<br> String contactName=cursor.getString(cursor.getColumnIndex(name));<br> String contactPhone=cursor.getString(cursor.getColumnIndex(phone));<br> list.add(contactName+"\n"+contactPhone);<br> }while (cursor.moveToNext());<br> }<br> return list;<br> }<br>}<br> |
3、AndroidManifest.xml
添加读取联系人信息权限声明
1 | <br> <uses-permission android:name= "android.permission.READ_CONTACTS" ></uses-permission> |
以上就是 视频直播系统源码,Android 读取联系人列表,更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2021-12-16 短视频平台源码,构建简单的底部导航栏
2021-12-16 android短视频开发,调用相机、相册,压缩图片后上传
2021-12-16 app直播源码,Android 设置系统亮度