음... 음?

 

소스를 보시면 대충 아실겁니다.

 

제 어플에 SMS 보내는 기능 추가중 동생이 이 아이디어를 주길레 냅다 만들어 봤슴다.

 

 

설명--

 

java

 

package hj2.fisher.inaz;

 

import android.app.Activity;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class LovemmaActivity extends Activity {
   
    Button btnSendSMS;
    EditText txtPhoneNo;
    EditText txtMessage;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);     
       
        new AlertDialog.Builder(LovemmaActivity.this)
  
  .setTitle("Welcome!")
  .setMessage("이 어플은 단지 '재미'를 위해 만들어진 어플입니다.\n번호 입력창에 관심이 있으신 분의 번호를 입력해주시고, 보내기 버튼을 누르심 되겠슴다. ")
  .setPositiveButton("알겠다.", null).show();
  
        btnSendSMS = (Button) findViewById(R.id.send);
        txtPhoneNo = (EditText) findViewById(R.id.no);
        txtMessage = (EditText) findViewById(R.id.txt);
 
        btnSendSMS.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {               
                String phoneNo = txtPhoneNo.getText().toString();
                String message = txtMessage.getText().toString();                
                if (phoneNo.length()==11 && message.length()>0) // 번호는 11자리가 대세라능
                 sendSMS(phoneNo, message);               
               
                else
                    Toast.makeText(getBaseContext(),
                        "정확한 번호를 입력하세요.",
                        Toast.LENGTH_SHORT).show();
            }
        });
    }

    private void sendSMS(String phoneNumber, 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);

        //상황에 따른 토스트 내뱉기
        registerReceiver(new BroadcastReceiver(){
            @Override
            public void onReceive(Context arg0, Intent arg1) {
                switch (getResultCode())
                {
                    case Activity.RESULT_OK:
                        Toast.makeText(getBaseContext(), "아!!! 너가 낚였다!!!!",
                                Toast.LENGTH_SHORT).show();
                        break;
                       
                    case SmsManager.RESULT_ERROR_NO_SERVICE:
                        Toast.makeText(getBaseContext(), "서비스 지역인지 아닌지 확인좀...",
                                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가 전송되었습니다.",
                                Toast.LENGTH_SHORT).show();
                        break;
                    case Activity.RESULT_CANCELED:
                        Toast.makeText(getBaseContext(), "SMS가 전송되지 않았습니다.",
                                Toast.LENGTH_SHORT).show();
                        break;                       
                }
            }
        }, new IntentFilter(DELIVERED));
       
        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI); 
    }


@Override
 public boolean onCreateOptionsMenu(Menu menu){
   menu.add(0, 1, 0, "Info");
  
   return super.onCreateOptionsMenu(menu);
}
 
 @Override
 public boolean onOptionsItemSelected (MenuItem item) {
 switch (item.getItemId()) { 

 case 1:
  //다이얼로그
  new AlertDialog.Builder(LovemmaActivity.this)
  .setTitle("정보")
  .setMessage("\n단지 재미를 위한 어플입니다.\n\n원하지 않는 결과가 나온다 해서 개발자에게 뭐라 하심 안됩니당...")
  .setPositiveButton("콜라", null).show();
  
  break;

  }
 return false;
 }
}

 

main.xml

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
   
  <TextView
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="추천할 분의 번호를 입력하세요." android:layout_weight="0.31"/>


  <EditText
  android:id="@+id/no"
  android:hint="    번호를 입력해주세요."
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:maxLength="11"
  android:numeric="decimal"
  />


  <EditText
  android:id="@+id/txt"
  android:text="야. 내가 니 좋아한다. 너 나랑 사귀자. 오늘부터 넌 내 애인이다."
  android:layout_width="0pt"
  android:layout_height="0pt"
  android:gravity="top"
  />


  <TextView
  android:layout_width="wrap_content"
  android:text="  11자리의 휴대폰 번호만 입력 가능합니다."
  android:layout_height="wrap_content"
  android:id="@+id/textView1"
  android:layout_weight="0.36">
  </TextView>

~... (이하 생략.)

 

.. 여기서 눈썰미 좋으신 분들은 찾으셨을텐데요.

main.xml의

 

  <EditText
  android:id="@+id/txt"
  android:text="야. 내가 니 좋아한다. 너 나랑 사귀자. 오늘부터 넌 내 애인이다."
  android:layout_width="0pt"
  android:layout_height="0pt"
  android:gravity="top"
  />

 

이 부분을 잘 눈여겨 보시기 바랍니다. (layout_width, height를 보라고 말 안했어요)

layout_width, height가 0pt로 설정되었습니다. 이 경우에는 EditText라는 건 존재 하나 눈에는 안보이게 되죠.

개발자 맘대로 문자 내용을 미리 설정 가능 하단 거죠. 케케