Java 我正在制作一个打电话的应用程序,如何保存多个号码,然后给用户选择其中一个?

Java 我正在制作一个打电话的应用程序,如何保存多个号码,然后给用户选择其中一个?,java,android,arraylist,input,save,Java,Android,Arraylist,Input,Save,我制作了一个应用程序,它保存了一个带有共享首选项的号码,还有一个按钮,可以用该号码执行通话 我想保存多个输入(数字)和名称,我知道我需要使用ArrayList 我如何保存输入、名称和数字,然后向用户显示带有名称的微调器,这样当用户选择名称时,应用程序将检索数字并校准该数字 谢谢大家! public class MainActivity extends AppCompatActivity { Button openButton = null; ImageButton editButton = n

我制作了一个应用程序,它保存了一个带有共享首选项的号码,还有一个按钮,可以用该号码执行通话

我想保存多个输入(数字)和名称,我知道我需要使用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 (android.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);

}
}

要保存多个联系人,可以使用Gson库或sqlite数据库。我认为格森也会这么做

首先,您必须创建一个contact类,包括字段名称、编号等。创建对象的ArrayList并将其保存到Gson并将其设置为字符串,这样您就可以将该字符串存储到SharedReferences中;使用相同的Gson,您可以检索类对象

请参阅此链接:

要保存多个联系人,您可以使用Gson库或sqlite数据库。我认为格森也会这么做

首先,您必须创建一个contact类,包括字段名称、编号等。创建对象的ArrayList并将其保存到Gson并将其设置为字符串,这样您就可以将该字符串存储到SharedReferences中;使用相同的Gson,您可以检索类对象

请参阅此链接: