브로드캐스트 리시버는 안드로이드에서 발생하는 여러 동작(화면이 on/off, 전원이 on/off, SMS 수신등..)들을 받고자 하는 곳에 알려주는 기능을 합니다. 방송알림정도로 표현을 할 수 있습니다.


먼저 SMS를 수신하기 위해서는 manifests 파일에 SMS에 대한 권한을 추가해야 합니다.

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


또한 SMS가 왔을 때 수신을 받기위해 BroadcastReceiver를 추가해줘야 합니다.


아래의 예시 코드를 참고

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

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<receiver android:name=".SMSReceiver">
<intent-filter >
<!-- 문자를 받을 수 있도록 intent filter를 추가 -->
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
</application>


이제 BroadcastReceiver 부분에서 SMS를 받았을 때의 액션을 처리하면 됩니다.
SMS에 대한 액션일때만 처리하기 위해 intent의 액션을 비교하여 처리하였다.


아래 예시코드를 참고

public class SMSReceiver extends BroadcastReceiver {
private String SMSACTION = "android.provider.Telephony.SMS_RECEIVED";
@Override
public void onReceive(Context context, Intent intent) {

if(intent.getAction().equals(SMSACTION)){
Bundle bundle = intent.getExtras();

if(bundle != null){
Object[] pdusObjArr = (Object[]) bundle.get("pdus");

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

Date curDate = new Date(messages[0].getTimestampMillis());
Log.d("@@문자 수신 시간", curDate.toString());

String number = messages[0].getOriginatingAddress();
Log.d("@@발신 번호 확인", number);

String smsBody = messages[0].getMessageBody().toString();
Log.d("@@문자 내용", smsBody);

}
}
}
}

핸드폰 인증에 대한 인증번호를 가져오는 방식도 SMS 내용을 가져오고 원하는 부분만 찾아서 사용하면 됩니다.

Posted by kkangMH

Android OS 버전정보

 

 

 

C

Cupcake

(컵케이크)

1.5 

Donut

(도넛) 

1.6 

E

Eclair

(이클레어)

2.0 ~ 2.1 

F

Froyo

(프로즌 요거트) 

2.2 ~ 2.2.1 

G

Gingerbread

(진저브레드) 

2.3 ~ 2.3.7

H

Honeycomb 

(허니콤)

3.0 / 3.1 / 3.2 

I

Ice Cream Sandwich 

(아이스크림 샌드위치)

4.0 ~ 4.0.4

J

Jellybean

(젤리빈) 

4.1 ~ 4.3.1 

K

KitKat

(킷캣) 

4.4 ~ 4.4.4 

Lollipop

(롤리팝)

5.0 ~ 5.1.1

Marshmallow

(마시멜로) 

6.0 ~ 6.0.1

N

Nougat

(누가) 

7.0 ~ 7.1.2 

O

Oreo

(오레오) 

8.0 ~ 



Posted by kkangMH

GCM 으로 메시지를 전달을 할 경우 서버로부터 전달한 요청에 대한 response를 받을 수 있습니다.

그 방식으로 GCM을 통하여 클아이언트에서 GCM을 받을 수 있는 상태인지, 앱이 삭제되어있는 상태인지 등의 상태등을 확인을 할 수 있습니다.


 - GCM 전송 작업에서 문제가 생겼을 경우 코드를 반환합니다.

Error

Http Code 

 Missing Registration Token

 200 + error:MissingRegistration

 Invalid Registration Token

 200 + error:InvalidRegistration

 Unregistered Device

 200 + error:NotRegistered

 Invalid Package Name

 200 + error:InvalidPackageName

 Authentication Error

 401

 Mismatched Sender

 200 + error:MismatchSenderId

 Invalid JSON

 400

 Message Too Big

 200 + error:MessageTooBig

 Invalid Data Key

 200 + error: InvalidDataKey

 Invalid Time to Live

 200 + error:InvalidTtl

 Timeout

 5xx or 200 + error:Unavailable

 Internal Server Error

 500 or 200 + error:InternalServerError

 Device Message Rate Exceeded

 200 + error: DeviceMessageRate Exceeded

 Topics Message Rate Exceeded

 200 + error: TopicsMessageRate Exceeded

 Invalid APNs credentials

 200 + error: InvalidApnsCredential


 * 디바이스가 GCM ID등 문제가 없을 경우 바로 전달이 됩니다.

 * 디바이스에서 해당 어플을 삭제하였거나, GCM을 받지 못하는 상황일 경우 response로 NotRegistered error를 반환을 합니다.


참고 : https://developers.google.com/cloud-messaging/http-server-ref

Posted by kkangMH

플레이스토어에 앱을 올리기 위해서는 release key를 생성하여 APK를 만들어야합니다.

release key를 새로 만들고 APK를 만드는 방법을 소개합니다.


1. 안드로이드 스튜디오 메뉴중 Build -> Generate Signed APK.... 을 클릭합니다.




2. create new... 버튼을 클릭하여 새로운 key를 만들어봅시다.






3. 빤간 밑줄이 있는 버튼을 클릭하여 key를 만들 경로를 선택합니다.




4.경로를 선택하고 file name을 설정해줍니다.




5. 밑에 보이는 방식으로 비밀번호와 Alias의 이름과 비밀번호를 설정해주고 국가코드는 kr로 설정해줍니다.




6. release apk는 방금 만든 key를 선택 및 비밀번호를 입력하고 next를 눌러줍니다.




7. APK가 생성될 경로를 선택하고 마지막으로 Finish를 누르면 완료


Posted by kkangMH

Activity 에서 Activity로 값을 넘겨줄때 사용하는 intent의 값을 삭제하기 위해서는 


넘겨줄때 KEY를 이용하여 removeExtra를 사용하면 됩니다.


 getIntent().removeExtra(KEY);


Posted by kkangMH

구글에서 제공해주는 API를 이용하면 안드로이드에서 지도를 만들기 간단합니다.


Google Map API를 연동하는 방법을 정리합니다. 안드로이드 스튜디오를 이용하여 진행하였습니다.


1. 안드로이드 스튜디오에서 새로운 프로젝트 생성

  원하는 프로젝트 이름으로 안드로이드 프로젝트를 생성합니다.

 


2. Google 프로젝트 만들기

 https://console.cloud.google.com 로 이동하여 프로젝트를 생성할 수 있습니다.

 - 원하는 프로젝트 이름을 설정하여 프로젝트를 생성하세요.



3. Google Map Api 사용 설정하기





4. 안드로이드에서 사용할 Google API 키 생성하기





 - 여기서 android 앱의 사용량 제한 항목에서 패키지 이름 및 지문을 추가는 선택사항입니다.

   추가를 원하는 분들을 위해서 SHA-1 인증서 지문 받는 방법입니다.

1. cmd를 실행합니다.

2. C:\Users\%username%\.android     // 경로로 이동합니다.

3. keytool -list -keystore debug.keystore -keypass android -storepass android -alias androiddebugkey                             // 명령어를 입력하면 SHA-1 인증서 지문을 가져올 수 있습니다.

4. 가져온 인증서 지문을 사용하면 됩니다.



5. 안드로이드 프로젝트(build.gradle 추가)



6. 구글 키 등록하기 (strings.xml 파일)



7. manifests 파일

 - 구글맵을 사용할 때 필요한 권한을 추가 및 meta-data 추가



8. MainActivity.java

 - 초기 위치를 위도 경도를 이용하여 설정 하고 내위치로 가는 버튼을 사용설정, 초기 줌 레벨을 15로 설정



9. activity_main.xml

 - google map을 추가하기위한 fragment를 추가합니다.



10. CustomMapFragment.java

 - Google Map Fragment를 사용할 때 원하는 방식으로 custom 하기 위해서 추가

 - fragment touch 이벤트 부분




Posted by kkangMH

윈도우 검색에서 cmd를 입력하여 실행합니다.




cmd창이 실행되면 이 경로로 이동합니다.

%username%은 자신의 PC name 입니다.

 1. cd C:\Users\%username%\.android




 # 해당 경로에서 명령어를 치면 sha-1 인증서 지문을 가져올 수 있습니다.

 1. keytool -list -keystore debug.keystore -keypass android -storepass android -alias androiddebugkey



Posted by kkangMH

안드로이드 cookie 허용 설정


 if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);

CookieManager cookieManager = CookieManager.getInstance();

cookieManager.setAcceptCookie(true);

cookieManager.setAcceptThirdPartyCookies(webView, true);

}



Posted by kkangMH

- ListView Item 세로의 크기를 정하는 방법은 custom 으로 생성한 adapter의 getView method에서 view의 크기를 설정해주면 됩니다.


 @Override

 public View getView(final int position, View convertView, ViewGroup parent) {

     convertView = inflater.inflate(R.layout.order_list_cell, parent, false);

     ViewGroup.LayoutParams layoutParams = convertView.getLayoutParams();

     layoutParams.height = 100;

     convertView.setLayoutParams(layoutParams);


     return convertView;

 }


Posted by kkangMH

안드로이드 TextView를 Spinner Style로 만들고 싶을때 간단한 방법

 - .xml 에서 TextView 속성으로 style="?android:attr/spinnerStyle" 을 추가하면 된다.


예)

 <TextView

android:id="@+id/test"

style="?android:attr/spinnerStyle"

android:text="테스트"

android:layout_width="match_parent"

android:layout_height="wrap_content"/>


 style="?android:attr/spinnerStyle" 


 or


 style="@style/Widget.AppCompat.Spinner"


Posted by kkangMH
이전버튼 1 2 이전버튼

블로그 이미지
kkangMH

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함