전체 글 58

[Android] 하이브리드 앱 만들기 (기본편)Hybrid webview default

앱에서 WebView를 이용하여 웹페이지를 보여주는 앱을 만들 필요가 있다. 기본 적으로 http://www.naver.com을 접속하는 샘플 앱을 만들어 본다. 구현 방법: 1. 신규 프로젝트 생성. 2. UI를 이용하여 WebView UI 생성 AndroidManifest.xml 코드 구현 private String TAG = "MainActivity"; private WebView mWebView = null; //웹뷰 private EditText mEtxtUrlAddress = null; //웹뷰 Url private Button mBtnUrlGo= null; //url 이동 @Override protected void onCreate(Bundle savedInstanceState) { MyLo..

안드로이드 2021.09.29

[Android] 웹뷰(webview) 디버깅(debugging) 방법.

업무의 배경: 기존의 네이티브로 개발 하던 앱을 웹앱 및 하이브리드 앱의 형태로 앱을 개발하기 시작했다. 웹앱 및 하이브리드 앱은 안드로이드의 웹뷰를 기반으로 웹페이지를 호출하여 개발 하게 된다. 따라서, 안드로이드의 웹뷰 환경에서 디버깅을 할 필요가 있다. 업무의 목적: 안드로이드 네이티브로 제공하는 웹뷰(WebView)를 PC의 크롬에서 디버깅 하는 방법[1]. 웹뷰 디버깅 방법: 안드로이드 소스코드 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { WebView.setWebContentsDebuggingEnabled(true); // 웹뷰의 디버깅 모드 활성화 } PC의 크롬 접근 방법 chrome://inspect#devices -> 크롬에서..

안드로이드 2021.09.29

Android 설치된 앱(패키지) 등록된 permission 확인

설치된 앱의 퍼미션이 정상적으로 권한을 받았는지 확인이 필요하다. $ adb shell dumpsys package [package name] 아래와 같이 결과 나오고, Install permission: 항목해서 해당 퍼미션의 grant:true를 통해서 할당된 퍼미션을 확인 한다. ...... Packages: Package [com.samsung.knox.example.gettingstarted] (4d9d885): userId=10247 pkg=Package{c97e6da com.samsung.knox.example.gettingstarted} codePath=/data/app/com.samsung.knox.example.gettingstarted-pt0GAF9z5qJHAmYZIgP9GA== re..

안드로이드 2021.09.29

[안드로이드] APP 간의 통신, 다른 앱의 하위 액티비티 실행

* 안드로이드 다른 앱의 특정 Activity 실행 방법. 다른 앱의 특정 화면을 호출해서 정보를 전달하고, 그 결과를 다시 수신 받아야 하는 상황이 필요하다. * 호출 부 구현. var compName : ComponentName = //ComponentName([패키지명],[액티비티 패키지명]) ComponentName("com.jky.sig.mysigrecevactivity","com.jky.sig.mysigrecevactivity.RecevSecondActivity") var intent : Intent = Intent(Intent.ACTION_MAIN) intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) //intent.setFlags(Intent.FLAG_ACT..

안드로이드 2021.09.29

[안드로이드] 다른 앱으로 브로드캐스트 리시버 명시적 호출 및 정지 된앱 깨우기

* 브로드 캐스트 명시적 호출 및 정지된 앱 깨우기 앱간 통신의 하나의 방법으로 broadcast를 이용하여 앱간의 정보를 주고 받을수 있다. 브로트 캐스트를 이용한 앱간 호출은 developer.android.com을 통해서 확인 해 볼수 있다. 수신 측에서 리시버를 메니페스트에 등록하고, 사용자의 액션명을 등록하고, android:exported="true" 을 이용하여 외부의 앱에서 호출 할수 있도록 등록하면 된다. 한가지 문제점은, 호출 부에서 명시적으로 호출 했음에도 앱이 처음 설치되거나, 죽어 있으면 브로드캐스트를 받을수 없는 현상이 있다. 이럴땐. 송신 부에서 intent.addFlags(FLAG_INCLUDE_STOPPED_PACKAGES); 의 옵션을 추가하여 종료된 앱을 깨울수 있다. ..

안드로이드 2021.09.29

[안드로이드] ADB를 제어하여, pc에서 안드로이드 단말기로 앱을 배포 제어하기.

* ADB를 이용하여 안드로이드 단말기로 앱을 배포하여 출하하는 솔루션. 안드로이드 단말기를 이용하여 각 회사의 솔루션을 제공할때, 단말기를 함께 판매 하는 경우, 각 회사의 솔루션에 해당하는 앱을 단말기에 설치하고 솔루션에 해당하는 앱들이 정상적으로 설치되었는지 확인하는 솔루션이 필요하다. 솔루션을 재공하는 단말기의 출하관리를 위한 솔루션. 아래와 같이 데모 프로젝트를 진행해 보았다. * 링크: gitlab.com/sunny.ji/adbmanagergui AdbManagerGUI 안드로이드 디바이스에 앱을 설치해 주는 어플리케이션 구현. 프로젝트의 목적: 안드로이드 디바이스를 제어하는 도구를 GUI로 구현 윈도우 향 프로그램을 개발하며, C# 및 Java의 언어를 이용하여 구현한다. 프로젝트의 범위: ..

안드로이드 2021.09.29

[Android] Android 10.0 Q 에서 시리얼넘버(Serialnumber)대체 키 SSAID(Settings.Secure.ANDROID_ID) 확인.

문제의 배경: 안드로이드를 식별하기 위한 단말기 식별번호로 사용하던, SerialNumber를 Android OS 10.0부터 사용 할수 없게 되었다. 관련내용: 고유 식별자의 분류는 아래와 같다.(참고자료) 세션 전용: 사용자가 앱을 종료 후 다시 시작 하면, 식별자가 달라진다. 앱 설치 재설정: 앱을 삭제 하거나, 앱 데이터를 삭제하는 경우 식별자가 달라진다. 디바이스 재설정(Device Factory Reset): 디바이스를 초기화하는 경우 식별자가 달라진다. 디바이스 재설정 이후에도 동일: 식별자가 항상 동일 재설정할 수 없는(Non-resettable) 식별자 이다. 기존에 단말기 고유 식별자로 사용하던 고유 식별자는 아래와 같았으나 Android 10.0이후 사용불가. TelephonyMana..

안드로이드 2021.09.29

[Android] 화면 캡처 방지

업무의 배경: - 화면 캡처를 방지할 필요가 있다. 핵심 코드 //Activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);// 캡처 방지 설정 //Activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); // 캡처 방지 해제 getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);// 캡처 방지 설정 getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); // 캡처 방지 해제 구현방법: activity_main.xml MainActivity.java p..

안드로이드 2021.09.29

[Android] 안드로이드 스플레시 구현

구현 방법: - 인트로 엑티비티에 스프레시 테마를 구현하여, 화면이 onCreate 되기 전까지는 스플레시 테마를 보여주고, onCreate 할때 setTheme(R.style.app_theme) 앱 테마를 적용한다음. - 안드로이드 이미지 URL로 이미지를 읽고 2초 대기후에 메인 엑티비티를 실행 한다. 참고자료: [1] https://holika.tistory.com/entry/내-맘대로-정리한-안드로이드-스플래시Splash-화면은-어떻게-만들어야-효율적으로-활용할-수-있을까? [2] 안드로이드 이미지 URL로 표시하기, https://jizard.tistory.com/179

안드로이드 2021.09.23

[Android] SharedPreferences- 공유 환경설정- 데이터 저장 1편

1. 목적: 간단하게 어플리케이션 내에서 데이터를 저장하여 활용할 필요가 있다. 저장하려는 키-값 컬렉션이 비교적 작은 경우 SharedPreferences API를 사용해야 합니다 참고: SharedPreferences API는 키-값 쌍을 읽고 쓰는데 사용되며 앱 설정을 위한 사용자 인터페이스 빌드를 지원하는 Preference API와 혼동해서는 안 됩니다(Preference API도 사용자의 설정을 저장하는 데 SharedPreferences를 사용하긴 함). Preference API에 관한 자세한 내용은 설정 개발자 가이드를 참조하세요. 공유 환경설정의 핸들 가져오기 다음 메서드 중 하나를 호출하여 새로운 공유 환경설정 파일을 생성하거나 기존 파일에 액세스할 수 있습니다. getSharedPr..

안드로이드 2021.09.16

[cordova] Toast plugin 만들기

1. 배경: 안드로이드 하이브리드 앱을 구현하게 될때, 코도바를 이용하여 웹코드(html,javaScript)언어를 통해서 앱을 구현하게 해줌과 동시에 네이티브와 웹간의 데이터 통신을 할 수 있게 해주는 기능을 한다. (@JavascriptInterface를 통해서도 통신이 가능한데...) 2. 구현 - Echo.java package com.android.test.plugins; import android.util.Log; import android.widget.Toast; import org.apache.cordova.CallbackContext; import org.apache.cordova.CordovaPlugin; import org.json.JSONArray; import org.json.JS..

안드로이드 2021.09.15

[Android] 액티비티를 다이얼로그 효과 주기

목적: 다이얼로그 처럼 보이고, 배경클릭 할 경우, 엑티비티가 종료되도록 구현(종료하면 안될 경우도 있을듯). 구현 방법: - 엑티비티의 테마를 다이얼로그 테마를 주는 것으로 해결 하였다. - 1번이 다이얼로그 테마로 해결 하였다. //Dialog.Alert 주면 이상함 - 2번의 방법도 테마를 사용하지만, 주변 배경 클릭시 닫히는 효과를 줄때 코드를 너무 많이 작성해야 해서 좋은 방법은 아닌걸로 보인다. 구현코드: 참고자료: [1]https://tristan91.tistory.com/121 [2]https://gg-i-dont-know.tistory.com/6

안드로이드 2021.08.30

[Android] 애니메이션 효과?(회전) 주기

목적: 안드로이드 애니메이션 효과 주기. AnimationUtils을 이용한다. res.anim.rotate_test.xml MainActivity.xml setContentView(R.layout.activity_main); TextView textView = findViewById(R.id.tvHello); Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.rotate_test); textView.startAnimation(animation); 프로젝트 첨부: 참고 자료: [1] https://developer.android.com/guide/topics/graphics/view-animation?hl=..

안드로이드 2021.07.20