将联系人姓名输入android应用并将其保存

时间:2018-08-27 22:24:13

标签: android

在我的Android应用程序中,我想访问设备中的联系人并选择其中的一个并将其存储在应用程序中,以便通过语音命令发送消息。 我已经成功选择了联系人并发送了消息,但是我有一个问题,当我退出应用程序时,该联系人已被清除,并且每次访问该应用程序时都必须选择该联系人...我可以将其存储在应用程序中并保持总是吗?我该怎么办?

此代码允许访问联系人并选择一个。

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode==PICK_CONTACT){
        if(resultCode== Activity.RESULT_OK){
            Uri contactData=data.getData();
            Cursor cursor=getContentResolver().query(contactData,null,null,null,null);
            if(cursor.moveToFirst()){
                String name=cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
                nameset.setText(name);
                String con_id=cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
                int has_phone=Integer.parseInt(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)));
                if(has_phone>0){
                    Cursor phoneCursor= getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
                            ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=?", new String[] {con_id}, null);

                    if(phoneCursor.moveToFirst()){
                        String phone_number=phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                        number.setText(phone_number);
                    }
                    phoneCursor.close();
                }
            }


        }
    }
}

2 个答案:

答案 0 :(得分:0)

您可以将联系人或整个电话簿的数据保存到SQLite或“共享”首选项中。您可以在这里找到更多信息:https://developer.android.com/guide/topics/data/data-storage

btw共享首选项也更易于使用,它是一个键/值存储,您可以在其中存储某些键下的数据。因此对于较小的数据量可能是更好的选择

答案 1 :(得分:0)

如果您需要存储的数据类型不复杂,则可以使用SharedPreferences。

public void SaveData(){
    SharedPreferences preferences = getSharedPreferences("phone_data", MODE_PRIVATE);
    // get the editor
    SharedPreferences.Editor editor = preferences.edit();
    // store the data in different type
    editor.putString("name", userName);
    editor.putString("phone", phoneNumber);
    // save the data
    editor.apply();
}

public void LoadData(){
    SharedPreferences preferences = getSharedPreferences("phone_data", MODE_PRIVATE);
    userName = preferences.getString("name", "");
    userPhone = preferences.getString("phoneNumber", "");
    // do whatever you want with your data now!
}