Android写入联系人
来源:互联网 发布:网络技术学校 编辑:程序博客网 时间:2024/06/07 00:23
获取写入的权限
在AndroidManifest.xml中添加下面这句请求权限
在activity页面直接利用try,catch写入联系人
try { insertConstacts(); } catch (Exception e) { getWrieteConstactsPermission(); }
- insertConstacts()方法如下:
public void insertConstacts() { ContentValues values = new ContentValues(); Uri rawContactUri = mContext.getContentResolver().insert( ContactsContract.RawContacts.CONTENT_URI, values);//EPApplication是我定义的Application的子类,getContextObject方法返回的是context long rawContactId = ContentUris.parseId(rawContactUri); // 表插入姓名数据 values.clear(); values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId); values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);// 内容类型 values.put(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, "维拉报警电话"); mContext.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values); //写入电话 values.clear(); values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId); values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE); values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, "95213176"); values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE); mContext.getContentResolver().insert(android.provider.ContactsContract.Data.CONTENT_URI, values); //写入头像 Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.mipmap.ic_launcher); ByteArrayOutputStream out = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); try { out.flush(); out.close(); } catch (IOException e) { e.printStackTrace(); } values.clear(); values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId); values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE); values.put(ContactsContract.CommonDataKinds.Photo.PHOTO, out.toByteArray()); mContext.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values); }
- 最开始会因为没有权限而进入catch,会执行的是getWrieteConstactsPermission()方法,此方法主要是申请权限和调用onRequestPermissionsResult()回调。
来看一下getWrieteConstactsPermission()方法:
private void getWrieteConstactsPermission() { if (ContextCompat.checkSelfPermission(mContext, android.Manifest.permission.WRITE_CONTACTS) != PackageManager.PERMISSION_GRANTED){ if (ActivityCompat.shouldShowRequestPermissionRationale(mActivity, android.Manifest.permission.WRITE_CONTACTS)){ new AlertDialog.Builder(mContext).setTitle("维拉将获取写入联系人权限").setPositiveButton("接受", (dialog, which) -> ActivityCompat.requestPermissions(mActivity, new String[]{android.Manifest.permission.WRITE_CONTACTS}, WRITE_PERMISSION_REQUEST)).setNegativeButton("拒绝", (dialog, which) -> Toast.makeText(mContext, "用户拒绝获取联系人权限!", Toast.LENGTH_SHORT).show()).show(); }else { ActivityCompat.requestPermissions(mActivity, new String[]{android.Manifest.permission.WRITE_CONTACTS}, WRITE_PERMISSION_REQUEST); } } }
当用户允许获取写入权限,WRITE_PERMISSION_REQUEST是个整型数据,作为onRequestPermissionsResult()的requestCode。
- 所以在activity中需要重写onRequestPermissionsResult()方法。
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); Log.i("lgq","requestCode:" + requestCode); if(requestCode == ConstactsUtils.WRITE_PERMISSION_REQUEST){ if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { constacts.insertConstacts(); } } }
- 看出来了把,此处调用了insertConstacts()方法,也就是申请到权限后立马写入联系人,ok!到此就可以结束了。
打卡收工!!
阅读全文
0 0
- Android写入联系人
- Android中联系人的操作(读取和写入联系人)
- 写入联系人
- 读取与写入android中的联系人
- android写入联系人Contacts的信息,包括联系人的姓名,联系方式和邮箱
- android写入联系人Contacts的信息,包括联系人的姓名,联系方式和邮箱
- android 联系人
- android联系人
- Android系统联系人数据表以及获取和写入(待写)
- ym——Android从零开始(10)(联系人数据的读取和写入)(新)
- Android 联系人开发- 查询联系人
- Android 联系人开发- 保存联系人
- Android联系人2--联系人查询
- Android联系人4--联系人查询
- Android联系人5--联系人查询
- Android联系人--联系人查询2
- 联系人数据的读取和写入
- Android 调用联系人列表,选择联系人
- 模拟,bfs(HDU 5336,XYZ and Drops)
- linux常用命令记录
- java多线程学习疑惑记录
- 以太坊(2):以太坊私有链环境下的账户管理、挖矿与转账
- 一个解决最后1公里的门户网站
- Android写入联系人
- php使用url传参和简单结构设计
- digest ~ 摘要认证
- Apache和Tomcat整合
- stm32 link 下载bin文件
- Android自定义Toast 解决关闭通知 Toast无法弹出
- Java 循环结构
- 关于上传图片插件webuploader的使用(同一个页面存在多个实例):
- maven学习笔记:20170606