Android 如何将电话号码数组保存到SharedReference中
我想使用SharedReference保存电话号码。由于它是从电话簿中提取并设置在textView中,我无法将它们全部保存在SharedReference中。请帮助我了解如何通过SharedReference保存和检索一组电话号码(数组或集合),并将其发送到另一个片段以发送该号码的消息 Contact.javaAndroid 如何将电话号码数组保存到SharedReference中,android,sharedpreferences,android-contacts,Android,Sharedpreferences,Android Contacts,我想使用SharedReference保存电话号码。由于它是从电话簿中提取并设置在textView中,我无法将它们全部保存在SharedReference中。请帮助我了解如何通过SharedReference保存和检索一组电话号码(数组或集合),并将其发送到另一个片段以发送该号码的消息 Contact.java package com.kamal.sos10; import android.content.ContentResolver; import android.content.Cont
package com.kamal.sos10;
import android.content.ContentResolver;
import android.content.Context;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.net.Uri;
import android.nfc.Tag;
import android.provider.ContactsContract;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.content.Intent;
import android.widget.TextView;
import android.widget.Toast;
import java.lang.reflect.Array;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class Contact extends AppCompatActivity {
EditText msg,editText2,editText3,editText4;
Button con1,con2,con3;
TextView textView3,textView5,textView6,textView7,textView8,textView9;
TextView text1;
// static final int PICK_CONTACT = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contact);
msg=(EditText)findViewById(R.id.msg);
// editText2=(EditText)findViewById(R.id.editText2);
textView3=(TextView)findViewById(R.id.textView3);
// text1=(TextView)findViewById(R.id.first);
textView5=(TextView)findViewById(R.id.textView5);
textView6=(TextView)findViewById(R.id.textView6);
textView7=(TextView)findViewById(R.id.textView7);
textView8=(TextView)findViewById(R.id.textView8);
textView9=(TextView)findViewById(R.id.textView9);
con1=(Button)findViewById(R.id.con1);
con2=(Button)findViewById(R.id.con2);
con3=(Button)findViewById(R.id.con3);
con1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Intent.ACTION_PICK);
intent.putExtra("extra_text1", "1");
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
if (intent.resolveActivity(Contact.this.getPackageManager()) != null) {
startActivityForResult(intent, 1);
}
}
});
con2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Intent.ACTION_PICK);
intent.putExtra("extra_text2", "2");
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
if (intent.resolveActivity(Contact.this.getPackageManager()) != null) {
startActivityForResult(intent,2);
}
}
});
con3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Intent.ACTION_PICK);
intent.putExtra("extra_text3", "3");
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
if (intent.resolveActivity(Contact.this.getPackageManager()) != null) {
startActivityForResult(intent, 3);
}
}
});
int num = Integer.valueOf(textView3.getText().toString());
int num2 = Integer.valueOf(textView6.getText().toString());
int num3 = Integer.valueOf(textView7.getText().toString());
Integer[] array=new Integer[3];
array[0]=num;
array[1]=num;
array[2]=num;
for (int j=0;j<3;j++)
{
Log.i("key", String.valueOf(array[j]));
}
/*
SharedPreferences sharedPreferences=this.getSharedPreferences("com.kamal.sos10", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putInt("array_size", strings.length);
for(int i=0;i<strings.length; i++)
edit.putString("array_" + i, strings[i]);
edit.commit();
int size = sharedPreferences.getInt("array_size", 0);
strings = new String[size];
for(int i=0; i<size; i++) {
strings[i]= sharedPreferences.getString("array_" + i, null);
Log.i("sdert",strings[i]);
}
*/
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 || requestCode == 2 || requestCode == 3) {
if (resultCode == this.RESULT_OK) {
contactPicked(data,requestCode);
}
}
}
private void contactPicked(Intent data,int req) {
ContentResolver cr = this.getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
cur.moveToFirst();
try {
// getData() method will have the Content Uri of the selected contact
Uri uri = data.getData();
//Query the content uri
cur = this.getContentResolver().query(uri, null, null, null, null);
cur.moveToFirst();
// column index of the contact ID
String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
// column index of the contact name
String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
// column index of the phone number
Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
new String[]{id}, null);
while (pCur.moveToNext()) {
String phone = pCur.getString(
pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)).replaceAll(" ", "");
String text1 = getIntent().getStringExtra("extra_text1");
Toast.makeText(Contact.this, text1, Toast.LENGTH_SHORT).show();
if (req==1)
{
textView3.setText(phone);
Toast.makeText(Contact.this, textView3.getText(), Toast.LENGTH_SHORT).show();
int num = Integer.valueOf(textView3.getText().toString());
Log.i("yut", String.valueOf(num));
textView5.setText(name);
}
if (req==2)
{
textView6.setText(phone);
textView8.setText(name);
}
if (req==3)
{
textView7.setText(phone);
textView9.setText(name);
}
pCur.close();
}
}
catch (Exception e) {
e.printStackTrace();
}
}
}
package com.kamal.sos10;
导入android.content.ContentResolver;
导入android.content.Context;
导入android.content.SharedReferences;
导入android.database.Cursor;
导入android.net.Uri;
导入android.nfc.Tag;
导入android.provider.contacts合同;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
导入android.content.Intent;
导入android.widget.TextView;
导入android.widget.Toast;
导入java.lang.reflect.Array;
导入java.util.HashSet;
导入java.util.Map;
导入java.util.Set;
公共类联系人扩展了AppCompatActivity{
EditText消息、editText2、editText3、editText4;
按钮con1、con2、con3;
文本视图文本视图3、文本视图5、文本视图6、文本视图7、文本视图8、文本视图9;
TextView text1;
//静态最终int PICK_触点=1;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contact);
msg=(EditText)findViewById(R.id.msg);
//editText2=(EditText)findViewById(R.id.editText2);
textView3=(TextView)findViewById(R.id.textView3);
//text1=(TextView)findViewById(R.id.first);
textView5=(TextView)findViewById(R.id.textView5);
textView6=(TextView)findViewById(R.id.textView6);
textView7=(TextView)findViewById(R.id.textView7);
textView8=(TextView)findViewById(R.id.textView8);
textView9=(TextView)findViewById(R.id.textView9);
con1=(按钮)findViewById(R.id.con1);
con2=(按钮)findViewById(R.id.con2);
con3=(按钮)findViewById(R.id.con3);
con1.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
意向意向=新意向(意向、行动和选择);
意向。额外(“额外文本1”、“1”);
intent.setType(Contacts contract.Contacts.CONTENT\u TYPE);
if(intent.resolveActivity(Contact.this.getPackageManager())!=null){
startActivityForResult(意向,1);
}
}
});
con2.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
意向意向=新意向(意向、行动和选择);
意向。额外(“额外文本2”、“2”);
intent.setType(Contacts contract.Contacts.CONTENT\u TYPE);
if(intent.resolveActivity(Contact.this.getPackageManager())!=null){
startActivityForResult(意向书,2);
}
}
});
con3.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
意向意向=新意向(意向、行动和选择);
意向。额外(“额外文本3”、“3”);
intent.setType(Contacts contract.Contacts.CONTENT\u TYPE);
if(intent.resolveActivity(Contact.this.getPackageManager())!=null){
startActivityForResult(意向,3);
}
}
});
int num=Integer.valueOf(textView3.getText().toString());
int num2=Integer.valueOf(textView6.getText().toString());
int num3=Integer.valueOf(textView7.getText().toString());
整数[]数组=新整数[3];
数组[0]=num;
数组[1]=num;
数组[2]=num;
对于(int j=0;j,您可以将ArrayList/Array/List保存到sharedpreferences,下面是您的方法
//Retrieve the values
Set<String> set = myScores.getStringSet("key", null);
//Set the values
Set<String> set = new HashSet<String>();
set.addAll(listOfExistingScores);
scoreEditor.putStringSet("key", set);
scoreEditor.commit();
//检索值
Set=myScores.getStringSet(“key”,null);
//设置值
Set=newhashset();
set.addAll(现有核心列表);
scoreEditor.putStringSet(“键”,set);
scoreEditor.commit();
但你可以参考一个链接来获取详细信息和链接。这些都很有用,也很容易理解
对于第二部分将数据发送到片段
con3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Just check it here
int num = Integer.valueOf(textView3.getText().toString());
int num2 = Integer.valueOf(textView6.getText().toString());
int num3 = Integer.valueOf(textView7.getText().toString());
Integer[] array=new Integer[3];
array[0]=num;
array[1]=num;
array[2]=num;
for (int j=0;j<3;j++)
{
Log.i("key", String.valueOf(array[j]));
}
}
});
我建议保存当前活动/片段中的数据,然后在希望打开的片段中从共享偏好中获取数据,但如果您真的想要获取数据并将数据发送到片段,请考虑链接。
注意:
通过查看您的代码,我认为可能会有大量联系人,因此这意味着您将拥有一个大型数组。我建议您将其存储在数据库中,因为您可以轻松检索/更新/删除任何数据和记录
更新:(在评论中澄清后)
con3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Just check it here
int num = Integer.valueOf(textView3.getText().toString());
int num2 = Integer.valueOf(textView6.getText().toString());
int num3 = Integer.valueOf(textView7.getText().toString());
Integer[] array=new Integer[3];
array[0]=num;
array[1]=num;
array[2]=num;
for (int j=0;j<3;j++)
{
Log.i("key", String.valueOf(array[j]));
}
}
});
您已经编写了代码,以便在创建时从Textview中获取联系人,我认为Textview中的联系人稍后会更新,而onCreate中的代码在更新之前会运行
进行此更改
con3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Just check it here
int num = Integer.valueOf(textView3.getText().toString());
int num2 = Integer.valueOf(textView6.getText().toString());
int num3 = Integer.valueOf(textView7.getText().toString());
Integer[] array=new Integer[3];
array[0]=num;
array[1]=num;
array[2]=num;
for (int j=0;j<3;j++)
{
Log.i("key", String.valueOf(array[j]));
}
}
});
con3.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
//在这儿查一下
int num=Integer.valueOf(textView3.getText().toString());
int num2=Integer.valueOf(textView6.getText().toString());
int num3=Integer.valueOf(textView7.getText().toString());
整数[]数组=新整数[3];
数组[0]=num;
数组[1]=num;
数组[2]=num;
对于(int j=0;j,您可以将ArrayList/Array/List保存到sharedpreferences,下面是您的方法
//Retrieve the values
Set<String> set = myScores.getStringSet("key", null);
//Set the values
Set<String> set = new HashSet<String>();
set.addAll(listOfExistingScores);
scoreEditor.putStringSet("key", set);
scoreEditor.commit();
//检索值
Set=myScores.getStringSet(“key”,null);
//设置值
Set=newhashset();
set.addAll(现有核心列表);
scoreEditor.putStringSet(“键”,set);
scoreEditor.commit();
但你可以参考一个链接来获取详细信息和链接。这些都很有用,也很容易理解
对于第二部分将数据发送到片段
con3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Just check it here
int num = Integer.valueOf(textView3.getText().toString());
int num2 = Integer.valueOf(textView6.getText().toString());
int num3 = Integer.valueOf(textView7.getText().toString());
Integer[] array=new Integer[3];
array[0]=num;
array[1]=num;
array[2]=num;
for (int j=0;j<3;j++)
{
Log.i("key", String.valueOf(array[j]));
}
}
});
好的