티스토리 뷰

설이네요 ㅎㅎ..

이번강좌는 어플에서 SMS문자를 전송하는 방법을 알아볼까 합니다

또한 브로드캐스트리시버에서 잠깐 소개한 문자 수신도 담겨 있습니다

0번~10번대 강좌를 보고 있으신 분들은 빨리 이 강좌까지 따라 오세요!

참고로 제 강좌는 전에 배운것이 다음 강좌에 섞여 나오는 일이 아주 많기에 전에배운건 꼭 아시고 계셔야만 합니다


27. 어플에서 SMS(문자) 전송 하기

27-1 안드로이드 앱에서 문자를 전송하기 전에 주의하세요

문자를 수신하고 전송하기 위해서는 어플에 권한을 추가해야 합니다

이것은 사용자가 앱을 깔때 이 어플이 문자를 전송할 수 있구나 라고 확인이 가능한데요

(사실 앱 설치때 권한 보는 사람은 적다지만 아무튼)

문자 전송이 꼭 필요한 기능이면 몰라도 필요없는 앱에 sms전송이 있다면 악성앱일 가능성이 큽니다

그리고 사용자의 돈을 사용하는 것이기 때문에 더욱 더 잘 다뤄야 합니다


이 강좌를 모두 마스터 한다면 위 사진처럼 진짜 문자 전송이 되는 앱을 만들수 있습니다


AndroidManifest.xml에 아래 권한을 추가해주세요

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

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

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




27-2 Main Layout

오랜만에 메인 레이아웃부터 시작해보겠습니다

필수로 있어야 하는건 "받는사람 번호"와 "보낼 메세지", "전송 버튼"정도 인데요

저는 TextView, EditText, TextView, EditText, Button순으로 배치했습니다

각자 알아서 마음대로 배치하되, 두개의 EditText의 id값은 각각 smsNumber, smsText으로 하고

Button은 android:onClick="sendSMS"속성을 넣어줍시다




27-3 문자를 전송하자

findViewById는 모두 생략하겠습니다


onClick에 맞게 메소드를 하나 만들어 보겠습니다


public void sendSMS(View v){
    String smsNum = smsNumber.getText().toString();
    String smsText = smsTextContext.getText().toString();

    if (smsNum.length()>0 && smsText.length()>0){
        sendSMS(smsNum, smsText);
    }else{
        Toast.makeText(this, "모두 입력해 주세요", Toast.LENGTH_SHORT).show();
    }
}



2~3줄의 getText().toString()은 모두 아시는 구문이죠?

모르신다면 [Development/App] - #7 EditText는 완전 쉬워요~ 부터 보시길 추천드립니다


5번째의 length는 String의 길이를 반환합니다

그래서 길이가 0인경우는 "", 즉 입력하지 않은것이 됩니다


if문으로 입력되지 않았을경우, Toast를 띄우도록 하고 있습니다


두개 모두 빈칸이 아닐경우 sendSMS라는 메소드를 호출하며, 입력한 Number와 Text를 그 메소드로 넘겨주고 있습니다



sendSMS메소드를 살펴보기 전에 먼저 문자를 보내는 API부터 알아볼께요

SmsManager mSmsManager = SmsManager.getDefault();

mSmsManager.sendTextMessage(destinationAddress, scAddress, text, sentIntent, deliveryIntent);

이 두개의 코드만 이해한다면 오늘 강의의 목표를 모두 마스터한것입니다


sendTextMessage에대해 조금 알아보겠습니다


  • destinationAddress : 받는사람의 Phone Number입니다 신기하게도 String형식입니다
  • scAddress : 이건 잘 모르겠습니다 일단 null을 입력해 주세요 (구글API : is the service center address or null to use the current default SMSC)
  • text : 문자의 내용입니다
  • sentIntent : 문자 전송에 관련한 PendingIntent입니다 null을 넣어도 되지만 저는 전송 확인결과를 알아보기 위해 이것도 사용할 예정입니다
  • deliveryIntent : 문자 도착에 관련한 PendingIntent라고 합니다 null을 넣어도 되지만 한번 이것도 사용해 보겠습니다


그럼 sendSMS()를 살펴보겠습니다


public void sendSMS(String smsNumber, String smsText){
    PendingIntent sentIntent = PendingIntent.getBroadcast(this, 0, new Intent("SMS_SENT_ACTION"), 0);
    PendingIntent deliveredIntent = PendingIntent.getBroadcast(this, 0, new Intent("SMS_DELIVERED_ACTION"), 0);

    registerReceiver(new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            switch(getResultCode()){
                case Activity.RESULT_OK:
                    // 전송 성공
                	Toast.makeText(mContext, "전송 완료", Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                    // 전송 실패
                	Toast.makeText(mContext, "전송 실패", Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_NO_SERVICE:
                    // 서비스 지역 아님
                	Toast.makeText(mContext, "서비스 지역이 아닙니다", Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_RADIO_OFF:
                    // 무선 꺼짐
                	Toast.makeText(mContext, "무선(Radio)가 꺼져있습니다", Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_NULL_PDU:
                    // PDU 실패
                	Toast.makeText(mContext, "PDU Null", Toast.LENGTH_SHORT).show();
                    break;
            }
         }
    }, new IntentFilter("SMS_SENT_ACTION"));

    registerReceiver(new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            switch (getResultCode()){
                case Activity.RESULT_OK:
                    // 도착 완료
                	Toast.makeText(mContext, "SMS 도착 완료", Toast.LENGTH_SHORT).show();
                    break;
                case Activity.RESULT_CANCELED:
                    // 도착 안됨
                	Toast.makeText(mContext, "SMS 도착 실패", Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    }, new IntentFilter("SMS_DELIVERED_ACTION"));

    SmsManager mSmsManager = SmsManager.getDefault();
    mSmsManager.sendTextMessage(smsNumber, null, smsText, sentIntent, deliveredIntent);
}


두번째~세번째 줄의 PendingIntent에 대해 따로 때어내어 설명하도록 하겠습니다


PendingIntent sentIntent = PendingIntent.getBroadcast(this, 0, new Intent("SMS_SENT_ACTION"), 0);

PendingIntent deliveredIntent = PendingIntent.getBroadcast(this, 0, new Intent("SMS_DELIVERED_ACTION"), 0);

각각 위에서부터 문자 전송, 문자 수신에 관련하여 sendTextMessage()에 넘겨줄 값들입니다


PendingIntent에서 세번째로 넘겨주는것이 new Intent()인데요

그 아래에 있는 코드들을 보면 registerReceiver가 있고, new IntentFilter()가 있습니다

registerReceiver는 우리 브로드캐스트리시버할때 한번 사용한 적이 있습니다


BroadCast를 등록해 주는 역할을 했었는데요

그 아래의 IntentFilter도 그 강좌에서 한 적이 잇습니다


[Development/App] - #24 Broadcast Receiver로 문자(SMS) 수신해보자



뭐.. 이런씩으로 말이죠


브로드 캐스트 리시버에서 어떤 작업이 이루어 지는지는 주석으로 설명이 되어 있으니 더 이상의 설명은 필요 없을듯 합니다




마지막줄의 sendTextMessage()가 실행되어 SMS가 전송되는 겁니다 ㅎㅎ

그럼 문자를 수신하는 방법도 알아봐야 겠지요?




27-4 문자를 수신하자 - 브로드캐스트리시버 편

문자를 수신하기 위해 필요한것은 브로드캐스트리시버 입니다

#24번에서 언급한 내용이지만 다시 한 번 짚고 넘어가 봅시다


먼저 문자가 오면 나타날 화면의 레이아웃부터 설정해 봅시다


저는 이렇게 TableLayout을 이용해서 구현했습니다


이 레이아웃은 한번도 써본적이 없으신 분들을 위해 코드를 제공하겠습니다


res/layout/activity_showsms.xml


<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".ShowSMSActivity"  >
    
    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
        
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="발신자" />
        
        <TextView
            android:id="@+id/originNum"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp" />
    
    </TableRow>
    
    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp" >
        
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="수신 시각" />
        
        <TextView
            android:id="@+id/smsDate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp" />
    
    </TableRow>
    
    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp" >
        
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="수신 내용" />
        
        <TextView
            android:id="@+id/originText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp" />
    
    </TableRow>
</TableLayout>



그다음에 브로드캐스트리시버를 작성합시다

이름은 SMSBroadCast.java입니다


import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class Broadcast extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if("android.provider.Telephony.SMS_RECEIVED".equals(action)){
            
        }
    }
}


자, 저 if문에 문자 수신을 위한 코드를 작성해 봅시다

저번에도 말씀드렸지만 한번에 이해하려고는 하지 마세요. 천천히 이해하시면 됩니다.


Bundle bundle = intent.getExtras();
Object messages[] = (Object[])bundle.get("pdus");
SmsMessage smsMessage[] = new SmsMessage[messages.length];

for(int i = 0; i < messages.length; i++) {
    smsMessage[i] = SmsMessage.createFromPdu((byte[])messages[i]);
}


그다음에는 저 SmsMessage에서 발신자와, 수신시각, 수신 메세지를 얻어와야 합니다


Date curDate = new Date(smsMessage[0].getTimestampMillis());
SimpleDateFormat mDateFormat = new SimpleDateFormat("yyyy년 MM월 dd일 HH시 mm분 ss초", Locale.KOREA);

String originDate = mDateFormat.format(curDate);
String origNumber = smsMessage[0].getOriginatingAddress();
String Message = smsMessage[0].getMessageBody().toString();


SimpleDateFormat은 얻어온 날짜를 년, 월, 일 형식에 맞게 변환해 줍니다

이에 대한 지식은 어플지식이 아니라 java지식이므로 검색해 주세요


4번 라인에서 mDateFormat.format으로 날짜 형식을 변환합니다


6~7번은 발신자와 문자 내용을 가져오는 코드입니다



마지막으로 받아온 값을 액티비티에 전달해 주어야 하는데요

Intent를 이용해서 값을 전달해보겠습니다


Intent showSMSIntent = new Intent(mContext, ShowSMSActivity.class);
showSMSIntent.putExtra("originNum", origNumber);
showSMSIntent.putExtra("smsDate", originDate);
showSMSIntent.putExtra("originText", Message);

showSMSIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

mContext.startActivity(showSMSIntent);


putExtra(name, value)은 name과 값을 입력하여 Intent로 실행한 액티비티(또는 서비스등)에서 값을 가져올수 있습니다


번호, 시각, 내용을 putExtra로 집어넣고 있으며

브로드캐스트에서 액티비티를 실행하므로 setFlags를 이용합니다


마지막으로 액티비티를 실행하면 브로드캐스트로 할일은 끝입니다


AndroidManifest.xml에 방금 만든 브로드캐스트를 등록합시다


<receiver android:name ="whdghks913.tistory.examplesendsms.SMSBroadCast">

    <intent-filter android:priority="9999">

        <action android:name="android.provider.Telephony.SMS_RECEIVED" />

    </intent-filter>

</receiver>




27-5 문자를 수신하자 - Activity편

java파일을 하나 만들어 주세요 이름은 ShowSMSActivity.java입니다


이 java파일에는 아래 코드만 추가해 주면 끝입니다


TextView smsDate = (TextView) findViewById(R.id.smsDate);
TextView originNum = (TextView) findViewById(R.id.originNum);
TextView originText = (TextView) findViewById(R.id.originText);

Intent smsIntent = getIntent();

String originNumber = smsIntent.getStringExtra("originNum");
String originDate = smsIntent.getStringExtra("smsDate");
String originSmsText = smsIntent.getStringExtra("originText");

originNum.setText(originNumber);
smsDate.setText(originDate);
originText.setText(originSmsText);


5번라인에서 Intent를 가져온후 7~9번을 보시면 putExtra로 넣은 값을 가져오고 있습니다


11~13번에서 Text를 적용하는 모습입니다



액티비티를 만들었으므로 AndroidManifest.xml에 추가해 줍시다

<activity android:name="whdghks913.tistory.examplesendsms.ShowSMSActivity" />



이제 완성입니다~~

작동 결과를 확인해 봅시다


    


문자전송과 수신이 모두 정상적으로 이루어 지는것을 확인해 볼수 있습니다~




요즘 강좌 길이가 상상을 초월할 정도로 길어져서 제가 무슨말 하는지도 못알아 먹을때가 있어요 ㅠㅠ

정성 가득 썼는데 글이 무시(?)당할때도 있는 것 같아요...


보시고 이 글이 마음에 드신다면 꼭 덧글 한마디 부탁드리겠습니다~



이번 강좌 예제는 심플 문자앱(?)으로도 쓸수 있을거 같아서 apk파일은 미리 올려드립니다 ㅎ


ExampleSendSMS.apk



이 강좌의 예제소스는 28번 강좌가 나오는 즉시 업로드 됩니다

카페에서는 원본글에서만 다운로드가 가능합니다

ExampleSendSMS.zip




참조 : http://developer.android.com/reference/android/telephony/gsm/SmsManager.html

http://itmir.tistory.com/424


저작자 표시 비영리 변경 금지
신고
댓글
  • 이전 댓글 더보기
  • 지나가는나그네 안드로이드를 공부하는 학생 입니다.
    문자 보내는 예제를 검색하다가 들어오게 되었는데 정말 깔끔하고 상세설명 감사합니다.
    덕택에 이해가 잘되고 보기도좋아서 너무좋네요!!
    브로드캐스트 부분을 잘몰라서.. 이해가 잘안가지만
    다른예제들도 많이 올려주시면 많이 참고하겠습니다.
    정말 감사합니다
    2016.01.08 15:50 신고
  • 锡潣 언어에 C자도 모르는 완전 왕초보인데요,너무 자세하게 설명 해주신 덕분에 포기하지 않고 배우는 중입니다. 지금은 베껴서 실패를 반복하면서 될때까지 하는 미련한 방벙으로 공부하고 있습니다. 앞으로도 님 좋은글 부탁드리겠구요 건강하시구새해 복 많이 받으세요~ 2016.02.16 07:38 신고
  • Hooking 잘봤습니다. 문자 송신 때 scAddress가 보내는 사람 전번 입력하는 부분인데 Null 말고 입력하면 보내는 사람 번호가 변경되서 전송되는지 혹시 테스트 해보셨는지 요?.. 이 부분이 궁금해서 들어왔는데 내용에 없네요.. 2016.03.21 17:08 신고
  • Favicon of http://itmir.tistory.com Mir(whdghks913) 통신사 차원에서 막혔다고 알고있습니다. 2016.03.21 19:14 신고
  • 이동현 미르님 감사합니다. 근데 질문있는데요. 회사에서 어플을 만들어서 고객분이 그 어플을 사용하는데..
    회사로 문자 보내기를 하는데 ...그때 문자 보내기 기능을 만든다면.. 받는 사람 회사 전번은 어디다 넣아야 하나요??
    2016.03.26 11:16 신고
  • 취믹로배우는 코딩 잘보고 배우고 있습니다 2016.06.02 14:19 신고
  • 말래몽 27-3에서 findViewById 부분이 왜 저는 오류가 날까요ㅠㅠㅠㅠ 2016.06.09 01:18 신고
  • 개발자 sendSMS() 에서 아래쪽에

    registerReceiver(new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
    switch (getResultCode()){
    case Activity.RESULT_OK:
    // 도착 완료
    Toast.makeText(mContext, "SMS 도착 완료", Toast.LENGTH_SHORT).show();
    break;
    case Activity.RESULT_CANCELED:
    // 도착 안됨
    Toast.makeText(mContext, "SMS 도착 실패", Toast.LENGTH_SHORT).show();
    break;
    }
    }
    }, new IntentFilter("SMS_DELIVERED_ACTION"));

    이 부분은 동작을 안하는데 혹시 원인을 아시나요?
    2016.06.09 14:37 신고
  • Favicon of http://itmir.tistory.com Mir(whdghks913) 몇가지 추측이 있는데요, 제 생각에 저 부분은 통신사와 연동되는 것 같습니다. 순정 문자앱을 보면 문자 수신 완료 확인 옵션이 있는 기종이 있는데요, 이때 사용되는게 아닐까 생각합니다. 2016.07.15 22:41 신고
  • 초보학생 안드로이드 공부하는데 도움이 많이 되는 것같아요!
    근데 문자를 수신 할 때 번호를 하나로 지정해서 문자 입력 없이 그 번호로만 문자가 수신되도록 하는 방법은 없을까요?ㅠ
    2016.07.06 11:19 신고
  • Favicon of http://itmir.tistory.com Mir(whdghks913) 문자를 보낼 번호를 입력할때 "01012345678"처럼 두시면 됩니다.
    그러니까 String 변수를 그냥 직접 입력하시면 됩니다.
    2016.07.15 22:44 신고
  • 비밀댓글입니다 2016.07.25 20:32
  • 비밀댓글입니다 2016.07.25 20:33
  • Favicon of http://itmir.tistory.com Mir(whdghks913) <uses-permission android:name="android.permission.SEND_SMS" />

    이거 추가된게 맞나요? 로그켓에서 이 권한이 없다고 나옵니다.
    2016.07.25 20:35 신고
  • 비밀댓글입니다 2016.07.25 20:36
  • Favicon of http://itmir.tistory.com Mir(whdghks913) 변경된 xml 적용이 안된 것일수 있습니다.
    Android Studio면 .gradle파일을 연다음 그냥 스페이스바만 아무데나 추가하셔도 재빌드 어쩌구 나오는데 이런 방법등으로 클린 - 재빌드 해보세요.
    2016.07.25 20:39 신고
  • 비밀댓글입니다 2016.07.25 20:50
  • Favicon of http://itmir.tistory.com Mir(whdghks913) 댓글이 지워져서 다시 달았습니다.

    Could not execute method for android:onClick
    이 구문을 보시면 onClick메소드를 실행하는데 오류가 발생했다고 알려주고 있는데요, onClick 메소드 다시한번 확인해보세요.
    2016.12.01 23:03 신고
  • 비밀댓글입니다 2016.07.25 20:36
  • Favicon of http://itmir.tistory.com Mir(whdghks913) 버튼을 눌렀을때 오류가 발생하나요?
    윗부분 로그켓에는 onClick관련 오류가, 아래는 권한 관련 오류가 나타납니다.
    layout의 버튼 onClick도 한번 보시고 특히 android:onClick 을 잘 보세요.
    ""값의 메소드가 java에 있어야 합니다.
    2016.07.25 20:56 신고
  • 비밀댓글입니다 2016.07.25 21:11
  • Favicon of http://itmir.tistory.com Mir(whdghks913) android:onClick은 버튼을 눌렀을때 어떤 작업을 할지 자바상에서 메소드로 묶어둔 내용이라 생각하시면 됩니다.
    사용방법은 android:onClick="sendSMS"라고 작성하면 자바에서
    public void sendSMS(View v)인 메소드가 꼭 필요합니다.
    이는 안드로이드 API이며 버튼이 눌러졌을때 버튼 속성에 onClick이 있으면 저 메소드를 호출하게 됩니다.

    예제소스를 다운받아서 확인해보세요. 이 문제가 아닐까 생각됩니다.
    2016.07.25 21:15 신고
  • 비밀댓글입니다 2016.07.25 21:39
  • Favicon of http://itmir.tistory.com Mir(whdghks913) 윈도우 업데이트하다 복구하고 그래서 당분간 테스트가 안됩니다.
    예제소스를 안드로이드 스튜디오에서 연다음 빌드해서 작동 확인해보세요.
    예제를 분석하신다음 다시 처음부터 작업해보시면 실력 향상에 도움이 됩니다.
    2016.07.25 21:44 신고
  • 비밀댓글입니다 2016.07.25 21:49
  • Favicon of http://itmir.tistory.com Mir(whdghks913) 방문해주셔서 감사합니다~ 꼭 오류 해결하시길 바랄께요 ㅎ 2016.07.25 21:50 신고
  • 김용식 안녕하세요..
    올려주신 소스는 잘 참고하여.. SMS/LMS 관련 프로그램을 만들었는데요..
    한가지 문제가 있어 질문 드립니다..

    저는 핸드폰에 등록된 모든 연락처로 문자를 발송하는 프로그램을 만들었는데요..
    이상한 점은.. 253건 정도밖에 안날아 갔는데도..
    SK에서(테스트 핸드폰이 SK입니다) 500건 발송제한에 걸렸다며.. 더 이상 문자가 날아가지 않습니다..
    100건정도 날아간 상태에서 200건 초과했다는 안내 문자가 SK에서 들어오구요..

    별다른 특별한 것 없이..
    핸드폰 연락처 쭉~ 읽어서.. 지정된 문자를 전체에 보내는 앱인데..
    무슨 문제로 SK측의 카운트가 이렇게 2배가량 차이가 날 수 있을까요??

    혹시 관련 경험이나.. 의견 있으시면..
    답변 부탁드리겠습니다.. ^^;;
    2016.08.22 16:06 신고
  • Favicon of http://itmir.tistory.com Mir(whdghks913) 문자를 보내는 코드 (예를들면 sendSMS메소드)를 주석처리한 뒤에 Log로 몇번 실행되는지 확인해보세요.
    연락처 모두 받아오셔서 for문 돌리실텐데 아무 전역변수 하나 만든다음 문자 전송 코드가 실행되는 부분에 ++해주신뒤 마지막에 변수 값 로그로 찍어보세요.
    2016.08.22 21:00 신고
  • 입문자 제가 글 읽고 SMS 보내는 어플을 만들었는데
    받는사람을 지정해놓고 SMS를 보내게 하려면 어떻게 해야하나요??
    activity_main.xml에서 EditText의 아이디인 smsNumber를
    MainActivity.java에서 지우는데
    mSmsManager.sendTextMessage(smsNumber, null, smsText, sentIntent, deliveredIntent);
    여기를 어떻게 고쳐야할지 모르겠습니다...
    여기가 안되다보니 activity_showsms.xml는 확인을 못하겠습니다...
    도와주시면 감사하겠습니다.
    2016.11.01 19:38 신고
  • Favicon of http://itmir.tistory.com Mir(whdghks913) EditText에 대한 제 글을 읽어보신 다음 다시 코드를 살펴봐주세요.
    본문에도 수신자의 번호를 가져와서 집어넣는 부분이 있습니다. 그 부분을 생략하고 바로 정해진 번호를 넣으면 됩니다.
    2016.11.01 22:37 신고
  • 레이 글 잘 봤습니다. 한 가지 질문이 있어 글 올립니다.
    registerReceiver 에 SMS_DELIVERED_ACTION를 등록하는데,
    듣기로는 broadcast에 등록을 하면 해제도 해줘야 된다고 하던데
    registerReceiver(new BroadcastReceiver() {
    ....
    }
    아런식으로 등록하면 따로 해제를 해줄 필요가 없는건가요??
    2016.11.28 13:58 신고
  • Favicon of http://itmir.tistory.com Mir(whdghks913) http://stackoverflow.com/questions/3875354/android-sms-message-delivery-report-intent

    구글링을 몇번 해봤는데 딱히 SMS_DELIVERED_ACTION을 해제하는 코드를 본적이 없습니다. 신경안쓰셔도 될 것 같습니다.
    2016.12.01 23:04 신고
  • 초보사용자 <layout.xml>
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.owner.messagetest.MainActivity">

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <TextView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="받는사람 전화 번호"
    android:textSize="20dp"/>

    <EditText
    android:id="@+id/phonenum"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

    <TextView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="내용을 입력하시오"
    android:textSize="20dp"/>
    <EditText
    android:id="@+id/messages"
    android:layout_width="fill_parent"
    android:layout_height="200dp" />

    <Button
    android:layout_width="80dp"
    android:layout_height="fill_parent"
    android:layout_gravity="center"
    android:text="전송"
    android:id="@+id/smssend"/>
    </LinearLayout>

    </RelativeLayout>



    <java>
    package com.example.owner.messagetest;

    import android.app.Activity;
    import android.app.PendingIntent;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.net.Uri;
    import android.provider.Telephony;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.telephony.SmsManager;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;

    public class MainActivity extends AppCompatActivity {

    Button btnSendSMS;
    EditText txtPhoneNo;
    EditText txtMessage;
    Context mContext;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btnSendSMS = (Button) findViewById(R.id.smssend);
    txtPhoneNo = (EditText) findViewById(R.id.phonenum);
    txtMessage = (EditText) findViewById(R.id.messages);

    btnSendSMS.setOnClickListener(new View.OnClickListener()
    {
    public void onClick(View v)
    {
    String phoneNo = txtPhoneNo.getText().toString();
    String message = txtMessage.getText().toString();
    if (phoneNo.length()>0 && message.length()>0)
    sendSMS(phoneNo, message);
    else
    Toast.makeText(getBaseContext(),
    "Please enter both phone number and message.",
    Toast.LENGTH_SHORT).show();
    }
    });
    }

    private void sendSMS(String phoneNo, String message) {

    PendingIntent sentIntet = PendingIntent.getBroadcast(this, 0, new Intent("SMS_SENT_ACTION"),0);
    PendingIntent deliveredIntent = PendingIntent.getBroadcast(this, 0, new Intent("SMS_DELIVERED_ACTION"), 0);

    registerReceiver(new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
    switch (getResultCode()){
    case Activity.RESULT_OK:
    Toast.makeText(mContext, "전송 완료", Toast.LENGTH_SHORT).show();
    break;
    case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
    Toast.makeText(mContext, "전송 실패", Toast.LENGTH_SHORT).show();
    break;
    case SmsManager.RESULT_ERROR_NO_SERVICE:
    Toast.makeText(mContext, "서비스 지역이 아닙니다.", Toast.LENGTH_SHORT).show();
    break;
    case SmsManager.RESULT_ERROR_RADIO_OFF:
    Toast.makeText(mContext, "전화기가 꺼져있습니다.", Toast.LENGTH_SHORT).show();
    break;
    case SmsManager.RESULT_ERROR_NULL_PDU:
    Toast.makeText(mContext, "PDU Null", Toast.LENGTH_SHORT).show();
    break;
    }
    }
    }, new IntentFilter("SMS_SENT_ACTION"));

    registerReceiver(new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
    switch (getResultCode()){
    case Activity.RESULT_OK:
    Toast.makeText(mContext, "SMS 도착 완료", Toast.LENGTH_SHORT).show();
    break;
    case Activity.RESULT_CANCELED:
    Toast.makeText(mContext, "sms 도착 실패", Toast.LENGTH_SHORT).show();
    break;
    }
    }
    }, new IntentFilter("SMS_DELIVERED_ACTION"));

    SmsManager mSmsManager = SmsManager.getDefault();
    mSmsManager.sendTextMessage(phoneNo, null, message, sentIntet, deliveredIntent);
    }
    }

    <로그캣에러부분>
    11-30 15:44:14.655 31480-31480/system_process E/ConsumerIrService: Can't open consumer IR HW Module, error: -2
    11-30 15:44:14.655 31480-31480/system_process E/libsuspend: Error opening /sys/power/autosleep: No such file or directory
    11-30 16:50:07.815 575-575/? E/installd: eof
    11-30 16:50:07.815 575-575/? E/installd: failed to read size
    11-30 16:50:08.425 31541-31541/? E/EmojiFactory_jni: Failed to load libemoji.so: dlopen failed: library "libemoji.so" not found
    11-30 16:50:09.415 31555-31555/system_process E/ConsumerIrService: Can't open consumer IR HW Module, error: -2
    11-30 16:50:09.415 31555-31555/system_process W/libsuspend: Error writing 'on' to /sys/power/state: Invalid argument
    11-30 16:50:09.415 31555-31555/system_process E/libsuspend: Error opening /sys/power/autosleep: No such file or directory
    11-30 16:50:09.445 31555-31595/system_process E/EventHub: could not get driver version for /dev/input/mouse0, Not a typewriter
    11-30 16:50:09.445 31555-31595/system_process E/EventHub: could not get driver version for /dev/input/mice, Not a typewriter
    11-30 16:53:14.607 32399-32399/? E/Netd: exec() res=0, status=768 for /system/bin/iptables -t filter -N natctrl_FORWARD
    11-30 16:53:14.607 32399-32399/? E/Netd: exec() res=0, status=768 for /system/bin/iptables -t filter -N natctrl_FORWARD
    11-30 16:53:14.607 32399-32399/? E/Netd: exec() res=0, status=768 for /system/bin/ip6tables -t filter -N natctrl_FORWARD
    11-30 16:53:14.617 32399-32399/? E/Netd: exec() res=0, status=768 for /system/bin/iptables -t filter -A FORWARD -j natctrl_FORWARD
    11-30 16:53:14.627 32399-32399/? E/Netd: exec() res=0, status=768 for /system/bin/ip6tables -t filter -A FORWARD -j natctrl_FORWARD
    11-30 16:53:14.697 32399-32399/? E/Netd: exec() res=0, status=768 for /system/bin/iptables -t filter -N oem_out
    11-30 16:53:14.707 32399-32399/? E/Netd: exec() res=0, status=768 for /system/bin/ip6tables -t filter -N oem_out
    11-30 16:53:14.717 32399-32399/? E/Netd: exec() res=0, status=768 for /system/bin/iptables -t filter -A OUTPUT -j oem_out
    11-30 16:53:14.727 32399-32399/? E/Netd: exec() res=0, status=768 for /system/bin/ip6tables -t filter -A OUTPUT -j oem_out

    <전체 로그캣>
    0 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x10803f6 (android:drawable/list_divider_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x10803f6 (android:drawable/list_divider_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x10800bd (android:drawable/ab_transparent_dark_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x10800bb (android:drawable/ab_stacked_transparent_dark_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x10800a1 (android:drawable/ab_bottom_transparent_dark_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x10800b5 (android:drawable/ab_solid_dark_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x10800b8 (android:drawable/ab_stacked_solid_dark_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108009e (android:drawable/ab_bottom_solid_dark_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x10800be (android:drawable/ab_transparent_light_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x10800bc (android:drawable/ab_stacked_transparent_light_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x10800a2 (android:drawable/ab_bottom_transparent_light_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x10800b6 (android:drawable/ab_solid_light_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x10800ba (android:drawable/ab_stacked_solid_light_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x10800a0 (android:drawable/ab_bottom_solid_light_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x10800b7 (android:drawable/ab_solid_shadow_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108041e (android:drawable/list_selector_disabled_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108041e (android:drawable/list_selector_disabled_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x10803ff (android:drawable/list_pressed_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x10803fd (android:drawable/list_longpressed_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108041b (android:drawable/list_selector_background_transition_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x10803ff (android:drawable/list_pressed_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x10803fd (android:drawable/list_longpressed_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108041b (android:drawable/list_selector_background_transition_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x10803f8 (android:drawable/list_focused_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x10803b4 (android:drawable/item_background_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108041f (android:drawable/list_selector_disabled_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108041f (android:drawable/list_selector_disabled_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080400 (android:drawable/list_pressed_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x10803fe (android:drawable/list_longpressed_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108041c (android:drawable/list_selector_background_transition_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080400 (android:drawable/list_pressed_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x10803fe (android:drawable/list_longpressed_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108041c (android:drawable/list_selector_background_transition_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x10803f8 (android:drawable/list_focused_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x10803b5 (android:drawable/item_background_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108027c (android:drawable/fastscroll_thumb_pressed_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108027a (android:drawable/fastscroll_thumb_default_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108027b (android:drawable/fastscroll_thumb_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108027c (android:drawable/fastscroll_thumb_pressed_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108027a (android:drawable/fastscroll_thumb_default_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080281 (android:drawable/fastscroll_track_pressed_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108027d (android:drawable/fastscroll_track_default_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108027f (android:drawable/fastscroll_track_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080281 (android:drawable/fastscroll_track_pressed_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108027d (android:drawable/fastscroll_track_default_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080276 (android:drawable/fastscroll_label_left_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080278 (android:drawable/fastscroll_label_right_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080282 (android:drawable/fastscroll_track_pressed_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108027e (android:drawable/fastscroll_track_default_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080280 (android:drawable/fastscroll_track_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080282 (android:drawable/fastscroll_track_pressed_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108027e (android:drawable/fastscroll_track_default_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080277 (android:drawable/fastscroll_label_left_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080279 (android:drawable/fastscroll_label_right_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108025b (android:drawable/editbox_dropdown_background_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080663 (android:drawable/textfield_search_selected_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080657 (android:drawable/textfield_search_default_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080665 (android:drawable/textfield_searchview_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080660 (android:drawable/textfield_search_right_selected_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108065e (android:drawable/textfield_search_right_default_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080667 (android:drawable/textfield_searchview_right_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080664 (android:drawable/textfield_search_selected_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080658 (android:drawable/textfield_search_default_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080666 (android:drawable/textfield_searchview_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080661 (android:drawable/textfield_search_right_selected_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108065f (android:drawable/textfield_search_right_default_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080668 (android:drawable/textfield_searchview_right_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080663 (android:drawable/textfield_search_selected_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080657 (android:drawable/textfield_search_default_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080660 (android:drawable/textfield_search_right_selected_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108065e (android:drawable/textfield_search_right_default_holo_dark) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080664 (android:drawable/textfield_search_selected_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080658 (android:drawable/textfield_search_default_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080661 (android:drawable/textfield_search_right_selected_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108065f (android:drawable/textfield_search_right_default_holo_light) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108062c (android:drawable/tab_unselected_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080627 (android:drawable/tab_selected_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108062b (android:drawable/tab_unselected_focused_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080626 (android:drawable/tab_selected_focused_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108062d (android:drawable/tab_unselected_pressed_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080628 (android:drawable/tab_selected_pressed_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108062d (android:drawable/tab_unselected_pressed_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080628 (android:drawable/tab_selected_pressed_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108061b (android:drawable/tab_indicator_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108062c (android:drawable/tab_unselected_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080627 (android:drawable/tab_selected_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108062b (android:drawable/tab_unselected_focused_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080626 (android:drawable/tab_selected_focused_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x108062d (android:drawable/tab_unselected_pressed_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? W/Resources: Preloaded drawable resource #0x1080628 (android:drawable/tab_selected_pressed_holo) that varies with configuration!!
    11-30 15:44:14.075 31466-31466/? I/Zygote: ...preloaded 274 resources in 130ms.
    11-30 15:44:14.075 31466-31466/? I/Zygote: ...preloaded 31 resources in 0ms.
    11-30 15:44:14.075 31466-31466/? D/libEGL: loaded /system/lib/egl/libGLES_bst.so
    11-30 15:44:14.105 31466-31466/? W/PGA: eglGetProcAddress: "eglWaitSyncKHR" not found
    11-30 15:44:14.105 31466-31466/? W/PGA: eglGetProcAddress: "eglGetRenderBufferANDROID" not found
    11-30 15:44:14.105 31466-31466/? W/PGA: eglGetProcAddress: "eglDupNativeFenceFDANDROID" not found
    11-30 15:44:14.105 31466-31466/? W/PGA: eglGetProcAddress: "eglGetSystemTimeFrequencyNV" not found
    11-30 15:44:14.105 31466-31466/? W/PGA: eglGetProcAddress: "eglGetSystemTimeNV" not found
    11-30 15:44:14.105 31466-31466/? W/PGA: eglGetProcAddress: "eglHibernateProcessIMG" not found
    11-30 15:44:14.105 31466-31466/? W/PGA: eglGetProcAddress: "eglAwakenProcessIMG" not found
    11-30 15:44:14.105 31466-31466/? W/PGA: eglGetProcAddress: "glActiveShaderProgramEXT" not found
    11-30 15:44:14.105 31466-31466/? D/libEGL: glActiveShaderProgramEXT missing: using gl_unimplemented
    11-30 15:44:14.105 31466-31466/? W/PGA: eglGetProcAddress: "glAlphaFuncQCOM" not found
    11-30 15:44:14.105 31466-31466/? D/libEGL: glAlphaFuncQCOM missing: using gl_unimplemented
    11-30 15:44:14.105 31466-31466/? W/PGA: eglGetProcAddress: "glBeginQuery" not found
    2016.11.30 17:40 신고
  • Favicon of http://itmir.tistory.com Mir(whdghks913) 중복된 댓글이 많아서 하나만 남기고 지웠습니다.

    1. 올려주신 로그캣이 정말 앱이 던진 로그켓인가?

    E/ConsumerIrService: Can't open consumer IR HW Module, error: -2
    E/libsuspend: Error opening /sys/power/autosleep: No such file or directory
    E/EmojiFactory_jni: Failed to load libemoji.so: dlopen failed: library "libemoji.so" not found
    E/EventHub: could not get driver version for /dev/input/mice, Not a typewriter

    아무리 봐도 이건 앱이 던진 오류가 아니라 안드로이드 시스탬이 던진 오류같은데요.
    앱이 출력한 오류가 아니니 분석할 수 없습니다.


    2. 불안정한 커롬은 아닌가?
    오류를 보니까 안정적인 순정에서는 매우 보기 힘든 로그가 있었습니다.
    Failed to load libemoji.so: dlopen failed: library "libemoji.so" not found
    불안정한 커롬에서는 안드로이드의 기본적인 API를 사용해도 오류가 발생할 가능성이 있습니다.
    이건 앱 개발자가 고칠 수 있는 범위가 아니고, 근본적인 펌웨어가 망가졌기 때문에 롬을 재빌드하지 않는 이상 오류를 수정할 수 없습니다.


    정확한 로그를 다시 댓글 달아주세요.
    2016.12.01 23:12 신고
  • 지승제 안녕하세요 이번에 프로그래밍에 대해 배우고 있는 사람입니다 제가 잘 읽어보며 코딩을 쳐봤는대 문자를 보내는 코딩에서 Toas메세지를 보낼때
    mContext에 대해 여쭤봐도 될런지요 ~ 여기에 this, getApplicationContext가 들어가던대 java는 기초 지식정도는 있기에 this로는 대충 이해가 갑니다
    그런대 여기서 왜 mContext가 들어갔는지와 Context가 뭔지 간단하게 설명해 주실 수 있을까요 ?ㅠ
    2016.12.03 02:50 신고
  • Favicon of http://itmir.tistory.com Mir(whdghks913) Context에 대해 댓글란에서 알려드리기엔 적합하지 않아서 다른 분의 게시글을 링크걸어드리겠습니다.

    http://arabiannight.tistory.com/272
    2016.12.08 17:09 신고
  • 김병희 대충 봐도 마음에 듭니다.
    제가 찾던 소스 같아서 받아서 공부해야겠습니다.
    감사합니다.
    2017.03.09 16:22 신고
  • 초보 앱을 다 만들어 실행을 했는데 send버튼이 안뜨네요ㅠㅠㅠㅠ 이유가 뭐죠 오류도 안뜨는데
    xml보면 send부분에 오류가 뜨긴합니다!
    2017.05.31 01:46 신고
  • 알랑말랑 이번에 브로드캐스트 리시버를 공부 중이었는데 이 자료가 있어서 큰 도움이 됐습니다.
    이런 분 때문에 세상은 아름다워지는 것 같습니다.

    감사합니다!!
    2017.09.29 15:06 신고
  • Jin 이제 처음 공부중인데 이거 보고 도움이 많이 될것 같습니다. 감사합니다. 2017.10.09 19:16 신고
댓글쓰기 폼