java我正在制作一个打电话的应用程序,如何保存多个号码,然后给用户选择其中一个?
我制作了一个应用程序,它保存了一个带有共享首选项的号码,还有一个按钮,可以用该号码执行通话
我想保存多个输入(数字)和名称,我知道我需要使用ArrayList
我如何保存输入、名称和数字,然后向用户显示带有名称的微调器,这样当用户选择名称时,应用程序将检索数字并校准该数字
谢谢大家!
public class MainActivity extends AppCompatActivity {
Button openButton = null;
ImageButton editButton = null;
int PERMISSION_ALL = 1;
String[] PERMISSIONS = {Manifest.permission.READ_CONTACTS, Manifest.permission.CALL_PHONE};
AlertDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(!hasPermissions(this, PERMISSIONS)){
ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
}
openButton = (Button) findViewById(R.id.button);
editButton = (ImageButton) findViewById(R.id.imageButton);
editButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder mBuilder = new AlertDialog.Builder(MainActivity.this);
View mView = getLayoutInflater().inflate(R.layout.activity_save, null);
final EditText number = (EditText) mView.findViewById(R.id.editText);
Button saveButton = (Button) mView.findViewById(R.id.button2);
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Integer num = Integer.valueOf(number.getText().toString());
String num = number.getText().toString();
SharedPreferences.Editor editor = getSharedPreferences("userInfo",MODE_PRIVATE).edit();
editor.putString("Phone", String.valueOf(num));
editor.commit();
Toast.makeText(MainActivity.this, "Saved!", Toast.LENGTH_LONG).show();
dialog.dismiss();
}
});
mBuilder.setView(mView);
dialog = mBuilder.create();
dialog.show();
}
});
openButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
makeCall();
}
});
}
public static boolean hasPermissions(Context context, String... permissions) {
if (安卓.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) {
for (String permission : permissions) {
if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
}
return true;
}
public void makeCall(){
SharedPreferences prefs = getSharedPreferences("userInfo", MODE_PRIVATE);
String restoredText = prefs.getString("Phone", null);
if (restoredText != null) {
String name = prefs.getString("Phone", "");
Intent call = new Intent(Intent.ACTION_CALL);
call.setData(Uri.parse("tel:" + name));
startActivity(call);
}
this.finishAffinity();
System.exit(0);
}
}
# 1 楼答案
要保存多个联系人,可以使用Gson库或sqlite数据库。我认为格森也会这么做
首先,您必须创建一个contact类,包括字段名称、编号等。创建对象的ArrayList并将其保存到Gson并将其设置为字符串,这样您就可以将该字符串存储到SharedReferences中;使用相同的Gson,您可以检索类对象
请参阅此链接:
store and retrieve a class object in shared preference