Uri.Builder与String互转

本文介绍了如何使用Uri.Builder类来构建和解析URI字符串。通过示例展示了如何设置路径、追加查询参数等操作,并提供了从字符串到Uri.Builder的转换方法。
[b]Uri.Builder -> String[/b]

Uri.Builder builder = new Uri.Builder();
builder.encodedPath("http://xxx.xxx.xxx.xxx:xxxx");
builder.appendEncodedPath("xxx/xxx/xxx");
builder.appendQueryParameter("key", "value");

String url = builder.toString();

[b]String -> Uri.Builder[/b]

Uri.Builder builder = Uri.parse(url).buildUpon();
private void importDefaultReadonlyContact() { new Thread(new Runnable() { @Override public void run() { Log.i(TAG, "isRunningNumberCheck before: " + sIsRunningNumberCheck); if (sIsRunningNumberCheck) { return; } sIsRunningNumberCheck = true; for(int i = 0;i < INSERT_PRESET_NUMBER_COUNT; i++){ Log.i(TAG, "isRunningNumberCheck after: " + sIsRunningNumberCheck); Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri .encode(INSERT_PRESET_NUMBER[i])); Log.i(TAG, "getContactInfoByPhoneNumbers(), uri = " + uri); Cursor contactCursor = getContentResolver().query(uri, new String[] {PhoneLookup.DISPLAY_NAME, PhoneLookup.PHOTO_ID}, null, null, null); try { if (contactCursor != null && contactCursor.getCount() > 0) { return; } else { final ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>(); ContentProviderOperation.Builder builder = ContentProviderOperation.newInsert(RawContacts.CONTENT_URI); ContentValues contactvalues = new ContentValues(); contactvalues.put(RawContacts.ACCOUNT_NAME,"PreSet Contacts"); contactvalues.put(RawContacts.ACCOUNT_TYPE,"PreSet Contacts Account"); contactvalues.put(MtkContactsContract.ContactsColumns.INDICATE_PHONE_SIM,MtkContactsContract.RawContacts.INDICATE_PHONE); contactvalues.put(MtkContactsContract.ContactsColumns.IS_SDN_CONTACT, -1); contactvalues.put(ContactsContract.Data.IS_READ_ONLY, true); builder.withValues(contactvalues); builder.withValue(RawContacts.AGGREGATION_MODE,RawContacts.AGGREGATION_MODE_DISABLED); operationList.add(builder.build()); builder = ContentProviderOperation.newInsert(Data.CONTENT_URI); builder.withValueBackReference(Phone.RAW_CONTACT_ID, 0); builder.withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE); builder.withValue(Phone.TYPE, Phone.TYPE_MOBILE); builder.withValue(Phone.NUMBER, INSERT_PRESET_NUMBER[i]); builder.withValue(Data.IS_PRIMARY, 1); operationList.add(builder.build()); builder = ContentProviderOperation.newInsert(Data.CONTENT_URI); builder.withValueBackReference(StructuredName.RAW_CONTACT_ID, 0); builder.withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE); builder.withValue(StructuredName.DISPLAY_NAME, INSERT_PRESET_NAME[i]); operationList.add(builder.build()); try { getContentResolver().applyBatch(ContactsContract.AUTHORITY, operationList); } catch (RemoteException e) { Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage())); } catch (OperationApplicationException e) { Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage())); } } } finally { // when this service start,but the contactsprovider has not been started yet. // the contactCursor perhaps null, but not always.(first load will weekup the provider) // so add null block to avoid nullpointerexception if (contactCursor != null) { contactCursor.close(); } } }//for Log.i(TAG, "isRunningNumberCheck insert: " + sIsRunningNumberCheck); sIsRunningNumberCheck = false; } }).start(); } 在这段代码中添加Data.IS_READ_ONLY属性,让添加的联系人不被删除
最新发布
10-28
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值