Как получить значение из выбранного элемента Spinner, который загружает ListPreference?

Итак, моя ситуация...

У меня есть Spinner с зонами парковки... Zone 1, Zone 2 и т.д.

Что я хочу сделать: когда пользователь нажимает кнопку «Отправить SMS-сообщение», кнопка должна загружать номер телефона зоны парковки в SMS-сообщение. Номер зоны парковки устанавливается в зависимости от выбора зоны парковки в Spinner.


Я полностью отредактировал свой первоначальный вопрос... Итак, я...

Спиннер с парковочными зонами:

final Spinner spinner_zona = (Spinner) findViewById(R.id.spinnerZona);
    ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(
            this, R.array.zone, android.R.layout.simple_spinner_item);
    adapter2.setDropDownViewResource(
            android.R.layout.simple_spinner_dropdown_item);
    spinner_zona.setAdapter(adapter2);

spinnerPrefs с номерами телефонов парковочных зон:

<resources>
<string-array name="spinnerZone_postavke">
    <item>700101</item>
    <item>700102</item>
    <item>700103</item>
    <item>700105</item>
    <item>700104</item>
</string-array>

Storing and retrieving phone numbers in SharedPreferences:

 public static boolean setPreferences(Context c, String key, String value) {
    SharedPreferences settings = c.getSharedPreferences("com.example.igor.parkingzagreb.Preferences", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = settings.edit();
    editor.putString(key, value);
    return editor.commit();


}

public static String getPreference(Context c, String key) {
    SharedPreferences settings = c.getSharedPreferences("com.example.igor.parkingzagreb.Preferences", Context.MODE_PRIVATE);
    String value = settings.getString(key, "");
    return value;

Я на правильном пути? Каков следующий шаг, чтобы отправить эти телефонные номера в SMS-сообщение с помощью нажатия кнопки?

Большое спасибо.


person Igor Gajic    schedule 05.02.2015    source источник
comment
Может быть, вы можете поставить хэш-карту с именем-номером телефона, а затем выполнить поиск телефона по имени счетчика.   -  person D4rWiNS    schedule 05.02.2015
comment
@D4rWiNS Я обновил ОП по вашему предложению. Можете ли вы проверить это, пожалуйста? Спасибо.   -  person Igor Gajic    schedule 05.02.2015
comment
@IgorGajic Где ты хранил номера телефонов?   -  person iRuth    schedule 05.02.2015
comment
@iRuth В папке значений файл spinnerPrefs.xml в виде элементов внутри массива строк.   -  person Igor Gajic    schedule 05.02.2015
comment
@IgorGajic Пожалуйста, опубликуйте исходный код активности, которая содержит Spinner, а также spinnerPrefs.xml.   -  person iRuth    schedule 05.02.2015
comment
@iRuth Я обновил первоначальный вопрос.   -  person Igor Gajic    schedule 05.02.2015


Ответы (1)


В вашем методе Buttons onClick вы можете реализовать SmsManager, как показано ниже.

Вы можете использовать SmsManager API:

SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage("phoneNumber", null, "message", null, null);

Или вы можете использовать встроенное приложение SMS:

Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.putExtra("sms_body", "default content"); 
sendIntent.setType("vnd.android-dir/mms-sms");
startActivity(sendIntent);

Для использования подхода SmsManager API требуется разрешение:

<uses-permission android:name="android.permission.SEND_SMS" />

Пример использования SmsManager в вашем методе Buttons onClick:

@Override
public void onClick(View v) {

    //Fetch your selected zone from the spinner
    String zone = spinner_zona.getSelectedItem().toString();

    //Set the receipt phone number here, e.g. from SharedPreferences
    String phoneNo = "yourPhoneNumber"      

    try {
        SmsManager smsManager = SmsManager.getDefault();
        smsManager.sendTextMessage(phoneNo, null, zone, null, null);
        Toast.makeText(getApplicationContext(), "SMS Sent!",
                    Toast.LENGTH_LONG).show();
    } catch (Exception e) {
        Toast.makeText(getApplicationContext(),
            "SMS faild, please try again later!",
            Toast.LENGTH_LONG).show();
        e.printStackTrace();
    }

}

Подробнее см. здесь.

person Marcus    schedule 05.02.2015
comment
Удивительные вещи @Marcus. Я не упомянул одну вещь. Пользователь должен ввести свой регистрационный номер в EditText, а затем отправить SMS с помощью кнопки «Отправить SMS». Как я могу это сделать? Я имею в виду, это, вероятно, сложно для новичка вроде меня, но мне нужно как-то научиться... Спасибо. - person Igor Gajic; 06.02.2015
comment
Вы меняете spinner_zona.getSelectedItem().toString(); в your_edit_text.getText().toString(); в вашем onClick. То же самое, что и при получении значения счетчика. Надеюсь, это поможет, и если это было полезно, отметьте его как принятый ответ :-) @Igor Gajic - person Marcus; 06.02.2015
comment
@Marcus Спасибо за вашу помощь и ваше время :-) - person Igor Gajic; 06.02.2015