전체글 138

[React] 웹뷰와 안드로이드 (Native) 간에 상호 통신하기

1. 웹뷰에서 Native 함수 실행하기 webView.addJavascriptInterface(WebBridge(), "BRIDGE") onCreate()에 addJavascriptInterface 메서드를 추가하여 웹뷰와 통신할 WebBridge 클래스를 생성해준다. BRIDGE는 추후 나올 react에서 접근할때 사용할 식별자이다. class WebBridge { @JavascriptInterface fun connectAndroid(): String { return token } } WebBridge 클래스 안에 @JavascriptInterface를 추가하여 웹뷰와 안드로이드를 이어준다. 안에함수들은 자유롭게 작성해준다. if (window.BRIDGE !== undefined) { window..

[Android][Kotlin] zxing 라이브러리를 이용해서 바코드 , QR코드를 인식해보자 (커스텀 진행)

0. 들어가기 앞서 zxing 이란? - 구글에서 제공하는 오픈소스로 Zebra Crossing의 약자이며, 다양한 바코드를 인식할 수 있다. 1. 시작 1-1. build.gradle implementation 'com.journeyapps:zxing-android-embedded:4.1.0' implementation 'com.google.zxing:core:3.4.0' 해당 라이브러리를 추가해준다. 1-2. Manifest.xml -- 라이브러리 추가 -- 카메라 권한 해당 권한을 추가해주어아 한다. 그리고, 바코드스캔을 사용하고자 하는 액티비티도 추가해준다. 나는 스캔하고 원래 화면으로 돌아올 것이 아닌, 현재 식당등지에서 많이 쓰이는 qr체크인 방식처럼 계속 인식되게끔 만들어보았다. 1-3. x..

[Android][Kotlin]fragment 에서 Notification으로 알림주기

1. 시작하기 알림 콘텐츠를 설정하려면 NotificationCompat.Builder 객체를 사용하여 알림 콘텐츠와 채널을 설정해야 한다. setSmallIcon() - 아이콘 설정, 필수 항목이다 setContetntTitle - 제목 setContentText - 본문 텍스트 val builder = Notification.Builder(context, "testChannel") .setSmallIcon(R.drawable.test_icon) .setContentTitle("test") .setContentText("test") 2. 채널 만들기 및 중요도 설정 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { val name = "테스트 채널" val..

[Android][Kotlin] AutoCompleteTextView를 사용해보자

AutoCompleteTextView란 네이버 구글 등 자동완성 검색 기능을 사용할 때 사용한다. 1. xml 만들기 위와 같이 만들어 준다. android:completionThreshold="2" copletionThreshold는 몇 개의 문자를 입력해야 자동완성 리스트가 나오는지 설정한다. 2. 항목 리스트 구성하기 val list = mutableListOf("test1", "test2", "test3") 3. 어댑터 등록 val adapter = ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, wordList) auto_tv.setAdapter(adapter) 결과 화면 completionThreshold를 1로 설정해 줬을때의..

[Android][Kotlin] SharedPreferences 이용하여 자동로그인 구현하기

SharedPreferences는 (key, value) 쌍으로 저장되며, 간단한 데이터 저장을 목적으로 제공된다. 내부저장소를 사용하기 때문에 권한 설정이 필요 없고 코드가 간단하다는 특징이 있다. 또한 데이터가 XML 형식으로 저장되기 때문에 앱이 종료되도 남아있다. ● 값을 저장할 때 1. SharedPreference, Editor 생성하기 val shared = getSharedPreferences("Pref", Context.MODE_PRIVATE) val editor = shared.edit() getSharedPreferences(이름, 모드) 이며 모드는 현재 보안상 MODE_PRIVATE만 사용한다. editor는 SharedPreferences에서 데이터를 저장하기 위해 사용하는 인터..

[PHP] php에서 fcm 으로 push 메시지 보내기

1. 파이어베이스 서버 키값 받아오기 파이어베이스 로그인 -> 좌측상단 설정버튼 -> 클라우드메시지 -> 서버 키 복사해두기 2. 핸드폰 토근값 받아오기 class MyFirebaseMessageingService : FirebaseMessagingService() { private val TAG = "testFireBase" override fun onNewToken(token: String) { super.onNewToken(token) Log.d(TAG, "token : $token") } 하고 실행 시 LogCat에 토큰값이 찍힐텐데, 복사해두자 3. php 파일 작성 4. 실행해서 확인해보자 주소창 http://localhost/경로/3번php파일.php 입력 핸드폰, 에뮬에 다음과 같이 알람이..

안드로이드 리사이클러뷰 스크롤 지정하기가 안될 때

사용언어 : Kotlin 평소에는 recyclerView.scrollToPosition(int)로 지정해 주면 되지만, 다른 스레드와 같이 쓸 경우(초기화, 조회 등) 포지션이 지정된 이후에 조회가 되어 포지션 값이 적용되지 않을 수 있으므로, 해당 코드와 같이 Handler를 이용하여 의도적으로 실행을 지연시킨 후, 조회 -> 포지션설정으로 흐름이 진행되게끔 바꿔준다.