1


私のアプリケーションは、ユーザーが希望のメッセージを送信する場所です。レシピエントの名前を含むスピナーがあり、ハードコードされています。「SMSは正常に送信されました」というトーストメッセージを作成しました。しかし、メッセージがレシピエントに送信されたことを確認するために、トーストメッセージに特定のレシピエントの名前を含める必要があることに気付きました。

レシピエントの名前を含めるために知っているトーストメッセージを試しましたが、エラーが発生し、アプリを実行するとトーストメッセージが失敗しました。SMSアプリの完全なコードを投稿します。

public class SMSEvents extends Activity
{
    Button btnSMS;
    EditText messageTxt;
    IntentFilter intentFilter;
    TextView text, textName;
    Spinner sendTo;

    ArrayAdapter<String> adapter;
    String friends[] = {"Kanak Priya", "Joanne Liew", "Melissa Haiting", "Michelle Lam", "Teo Kin Hua", "David Yeo", "Nur Ashiqin", "Stephanie"};

    private int namesSpinnderId;

    private BroadcastReceiver intentReceiver = new BroadcastReceiver()
        {
            @Override
            public void onReceive(Context context, Intent intent)
            {
                // ---display the SMS received in the TextView---
                TextView text = (TextView) findViewById(R.id.text);
                text.setText(intent.getExtras().getString("sms"));                          
            }                       
    };

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sms);

        sendTo = (Spinner) findViewById(R.id.sendTo);

        adapter = new ArrayAdapter<String>(this,
                R.layout.spinner_text, friends);
        sendTo.setAdapter(adapter);





        /*BuddyDBAdapter buddyDB = new BuddyDBAdapter(this);

        sendTo = (Spinner) findViewById(R.id.sendTo);
        Cursor friendsCursor = buddyDB.getAllNames();
        startManagingCursor(friendsCursor);*/

        /*String[] from = new String[]{BuddyDBAdapter.KEY_NAME};
        int[] to = new int[]{R.id.sendTo};

        SimpleCursorAdapter friendsAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, friendsCursor, from, to);
        friendsAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        sendTo.setAdapter(friendsAdapter);*/

       /* sendTo.setOnItemSelectedListener(new OnItemSelectedListener()
            {

                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
                {
                    Cursor c = (Cursor)parent.getItemAtPosition(pos);
                    namesSpinnderId = c.getInt(c.getColumnIndexOrThrow(BuddyDBAdapter.KEY_ROWID));                  
                }

                @Override
                public void onNothingSelected(AdapterView<?> arg0)
                {
                    // TODO Auto-generated method stub

                }

            });*/

        // ---intent to filter for SMS messages received---
        intentFilter = new IntentFilter();
        intentFilter.addAction("SMS_RECEIVED_ACTION");

        // ---register the receiver---
        registerReceiver(intentReceiver, intentFilter);

        //sendTo = (EditText) findViewById(R.id.sendTo);
        //textName = (TextView) findViewById(R.id.textName);


        sendTo = (Spinner) findViewById(R.id.sendTo);
        messageTxt = (EditText) findViewById(R.id.messageTxt);

        btnSMS = (Button) findViewById(R.id.btnSMS);
        btnSMS.setOnClickListener(new View.OnClickListener()
            {
                public void onClick(View v)
                {
                    String contact_name = sendTo.getSelectedItem().toString();
                    String message = messageTxt.getText().toString();

                    if (contact_name.length() > 0 && message.length() > 0)
                        sendSMS(contact_name, message);
                    else
                        Toast.makeText(
                                getBaseContext(),
                                "Please enter your message",
                                Toast.LENGTH_SHORT).show();

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

            });

        Button btnBack = (Button) findViewById(R.id.btnMain);
        btnBack.setOnClickListener(new View.OnClickListener()
            {

                @Override
                public void onClick(View arg0)
                {
                    Intent menuIntent = new Intent(SMSEvents.this, MainPage.class);
                    startActivity(menuIntent);

                }
            });


    }




    @Override
    protected void onResume()
    {
        // ---register the receiver---
        // registerReceiver(intentReceiver, intentFilter);
        super.onResume();
    }

    @Override
    protected void onPause()
    {
        // ---unregister the receiver---
        // unregisterReceiver(intentReceiver);
        super.onPause();
    }

    @Override
    protected void onDestroy()
    {
        // ---unregister the receiver---
        unregisterReceiver(intentReceiver);
        super.onPause();
    }

    private void sendSMS(String contact_name, String message)
    {
        String SENT = "SMS SENT";
        String DELIVERED = "SMS_DELIVERED";

        PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(
                SENT), 0);

        PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
                new Intent(DELIVERED), 0);

        // ---when the SMS has been sent---
        registerReceiver(new BroadcastReceiver()
            {
                @Override
                public void onReceive(Context arg0, Intent arg1)
                {
                    switch (getResultCode())
                        {
                        case Activity.RESULT_OK:
                            Toast.makeText(getBaseContext(), "SMS is sent to" +contact_name successfully",
                                    Toast.LENGTH_SHORT).show();
                            break;

                        case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                            Toast.makeText(getBaseContext(), "Service failure",
                                    Toast.LENGTH_SHORT).show();
                            break;

                        case SmsManager.RESULT_ERROR_NO_SERVICE:
                            Toast.makeText(getBaseContext(), "No service",
                                    Toast.LENGTH_SHORT).show();
                            break;

                        case SmsManager.RESULT_ERROR_NULL_PDU:
                            Toast.makeText(getBaseContext(), "Null Pdu",
                                    Toast.LENGTH_SHORT).show();
                            break;

                        case SmsManager.RESULT_ERROR_RADIO_OFF:
                            Toast.makeText(getBaseContext(), "Radio off",
                                    Toast.LENGTH_SHORT).show();
                            break;

                        }
                }
            }, new IntentFilter(SENT));

        // ---when the SMS has been delivered---
        registerReceiver(new BroadcastReceiver()
            {
                @Override
                public void onReceive(Context arg0, Intent arg1)
                {
                    switch (getResultCode())
                        {
                        case Activity.RESULT_OK:
                            Toast.makeText(getBaseContext(), "SMS delivered",
                                    Toast.LENGTH_SHORT).show();
                            break;

                        case Activity.RESULT_CANCELED:
                            Toast.makeText(getBaseContext(),
                                    "SMS not delivered", Toast.LENGTH_SHORT)
                                    .show();
                            break;
                        }
                }
            }, new IntentFilter(DELIVERED));

        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage("5554", null, message, sentPI, deliveredPI);
        //sms.sendTextMessage(contact_name, null, message, sentPI, deliveredPI);

        /*try
        {
            SmsManager smsManager = SmsManager.getDefault();
            smsManager.sendTextMessage(contact_name, null, message, null, null);
            Toast.makeText(getApplicationContext(), "SMS is sent successfully!", Toast.LENGTH_LONG).show();
        }
        catch(Exception e)
        {
            Toast.makeText(getApplicationContext(), "SMS failed! Please try again later!", Toast.LENGTH_LONG).show();
            e.printStackTrace();
        }*/
    }
}

レシピエントのToast.makeText(getBaseContext(), "SMS is sent to" +contact_name successfully", Toast.LENGTH_SHORT).show();名前を含めるために私がやろうとしていること。

誰かがこのトーストをする方法を知っているなら、私はそれを感謝します=)。簡単な助けを求めて申し訳ありませんが、私はこの種のトーストメッセージを行う3つの異なる方法を試しました。

前もって感謝します!=)

4

1 に答える 1

0

私はこのトーストを行う方法を理解しました。

public void onReceive()内にあるこのトーストメッセージをコーディングしますprivate void sendSMS()

このような:

Toast.makeText(getBaseContext(), "SMS is sent to " +sendTo.getSelectedItem()+ " successfully.", Toast.LENGTH_SHORT).show();

getSelectedItem()スピナーから選択されたアイテムを取得しています。EditTextまたはTextViewを使用している場合は、次のように置き換えgetSelectedItem()てください。getText()

:D、私と同じような問題を抱えている人は、この答えを試してみて、同じような問題が解決することを願っています。:D

于 2012-09-28T04:36:05.560 に答える