java - 如何插入多余的联系人?
问题描述
实际上我想要做的是插入冗余联系人并且没有任何名称(只是电话号码),例如我想在联系人中插入 123456789 次。不用说我是 Android 新手所以我有几个问题:
- android 在哪里可以准确检查联系人是否是多余的?
- 检查应该需要一些时间吧?而且我不希望那样,那么有什么方法可以禁用检查吗?这是我在stackoverflow上找到的代码
package com.example.contactsoperation;
import java.util.ArrayList;
import android.Manifest;
import android.app.Activity;
import android.content.ContentProviderOperation;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.OperationApplicationException;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.RemoteException;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.StructuredName;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.RawContacts;
import android.view.Menu;
import android.widget.ListView;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
// protected String[] names = {"Amanda", "Candy", "Dandy"};
protected String[] numbers = {"1234567890", "1234567890", "1234567890"};
protected int[] ids = {1, 2, 3};
private static final int PERMISSIONS_REQUEST_READ_CONTACTS = 100;
private static final int PERMISSIONS_REQUEST_WRITE_CONTACTS = 100;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.WRITE_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
// requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, PERMISSIONS_REQUEST_READ_CONTACTS);
requestPermissions(new String[]{Manifest.permission.WRITE_CONTACTS}, PERMISSIONS_REQUEST_WRITE_CONTACTS);
//After this point you wait for callback in onRequestPermissionsResult(int, String[], int[]) overriden method
} else {
for (int i = 0; i < numbers.length; i++) {
// writeContact(names[i], numbers[i]);
writeContact(numbers[i]);
}
}
}
private void writeContact(String numbers) {
ArrayList contentProviderOperations = new ArrayList();
//insert raw contact using RawContacts.CONTENT_URI
contentProviderOperations.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
.withValue(RawContacts.ACCOUNT_TYPE, null).withValue(RawContacts.ACCOUNT_NAME, null).build());
//insert mobile number using Data.CONTENT_URI
contentProviderOperations.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE)
.withValue(Phone.NUMBER, numbers).withValue(Phone.TYPE, Phone.TYPE_MOBILE).build());
try {
getApplicationContext().getContentResolver().
applyBatch(ContactsContract.AUTHORITY, contentProviderOperations);
} catch (RemoteException e) {
e.printStackTrace();
} catch (OperationApplicationException e) {
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return true;
}
附言
我故意想要冗余。实际上,我正在寻找的是禁用该检查,因为无论数字是否重复,都需要一些时间来检查它是否重复,并想象我想插入 1M 联系人它变得越来越慢检查如果它是多余的
解决方案
推荐阅读
- sql - 如何通过在同一查询中创建的字段对从查询返回的记录进行排序(MS ACCESS)
- react-native - 是否有正确的方法使用 useNavigation() 钩子和 useEffect() 依赖项?
- java - 类卡不会转换为字符串
- django - 如何更改 django 检查其他布尔字段而不是 is_staff 以进行管理面板身份验证?
- mysql - onDelete 级联不适用于“一对一” - Sequelize.js
- java - 如何加减小时和分钟
- css - 在 Firefox 60 或更早版本中为 SVG 剪辑路径设置动画时出现随机方块
- swift - 致命错误:在我尝试 reloadData() 后隐式展开可选值时意外发现 nil
- java - SimpleDataForma ParseException:无法解析的日期?
- python - 如何拆分熊猫数据框列中的所有字符串?