Android SDK Manager 에서 sdk 콤포넌트들을 다운로드 받을 때 peer not authenticated 오류가 발생할 경우

By | 1월 18, 2021

정확한 해결방법인지는 모르겠지만, 일단 이 방법을 써서 통과함.   프로젝트 루트(ex: MyApplication) > build.gradle 파일을 열어서 jcenter() 라고 되어 있는 부분을 jcenter{ url “http://jcenter.bintray.com/” }  로 수정한 후 다시 실행하니 성공하였다.   이거 되는 줄 알았는데 아니었네… ㅠㅠ..      

[Android Studio / 개발PC DRM이슈] Rendering Problems Exception raised during rendering: Index: 0, Size: 0 (Details)

By | 1월 18, 2021

Android Studio 에서 android_main.xml 등을 선택하여 layout preview를 볼 때 Rendering Problems   Exception raised during rendering: Index: 0, Size: 0 (Details) 오류가 발생하면서 레이아웃이 표시되지 않는 문제가 있었다.    구글링을 해 봐도, API버전을 바꿔보라는 말 정도 밖에 나와있지 않았고,  IndexOutOfBoundsException 이 발생하는 문제는 한 건도 검색되지 않았다.   그런데 Android Studio 를 재설치하면 문제가… Read More »

[Android] 세션쿠키 제거하기 (웹뷰의 로그인 정보 제거 등을 위해)

By | 1월 18, 2021

원래 매개변수 없는 removeSessionCookie() 를 사용했었다고 하는데, 비동기 콜백을 인수로 받는 removeSessionCookies(new ValueCallback<Boolean>(){}) 로 변경되었다고 한다. 그래서 짜본 코드가 아래의 것. 안드로이는 생초보라 맞능가 몰겄어~   public void onSessionCookieRemoveClicked(View v) { CookieManager cookieManager = CookieManager.getInstance(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { cookieManager.removeSessionCookies(new ValueCallback<Boolean>() { @Override public void onReceiveValue(Boolean value) { Log.d(“”, “## 롤리팝 이상 버전의 removeSessionCookie() 호출… Read More »

[펌글][Android] SharedPreferences 에 저장한 데이터가, 앱을 삭제해도 지워지지 않는 경우

By | 1월 18, 2021

– 출처: http://stackoverflow.com/questions/41808957/sharedpreferences-not-reset-on-reinstall –      In Android Marshmallow Google introduced the “Auto Backup” feature which is turned on by default if your targetSdkVersion is >=23. This will back up your database and SharedPreferences by default and restore it when you re-install the application. To turn this feature off you have to add android:allowBackup=”false” to your… Read More »

[Android] Android Studio에서 JUnit 테스트를 할 때 Logcat을 사용할 수 있도록 하는 설정 (powermock 설정 관련)

By | 1월 18, 2021

원래는 JUnit 같은 거 잘 안쓰는 스타일인데, 하도 Test 클래스의 main() 실행이 안되길래(클래스를 못 찾는다나 어쩐다나) JUnit으로 방향을 돌려 봤다. 그런데 unit test를 하다 보니, Logcat 을 실행하는 부분에서 에러가 발생해서 진행이 되질 않았다.  구글링을 해 보니 powermock 이란 걸 써야 한다네? 그래서 dependency 들을 찾아서 build path 에 추가해 주는데, 이것도 워낙 라이브러리가 세분화… Read More »

안드로이드 android.os.NetworkOnMainThreadException 에러 해결

By | 1월 18, 2021

허니컴 이후 버전의 안드로이드는 메인스레드에서 네트워크 호출을 할 수 없다고 한다. 내 경우에는 Activity의 onCreate() 메서드에서 HttpURLConnection 을 사용하려 했을 때 이 오류가 발생하였다.   이럴 경우에는 android.os.AsyncTask 를 상속받은 사용자정의 클래스를 작성하여 별도의 스레드에서 동작하도록 하면 된다.      

[펌글] Android WebView.loadData() 로 UI 출력시 한글 깨짐 문제

By | 1월 18, 2021

– 출처: http://www.acidzazz.com/2012/12/webview.html –   Load할 data가 “UTF-8” 일때, WebView mWebView = (WebView)findViewById(R.id.webView1); mWebView.getSettings().setDefaultTextEncodingName(“UTF-8”); // 내 경우는 이건 딱히 추가하지 않음 String str = “한글”; mWebView.loadData(str,  “text/html”, “UTF-8”);  // Android 4.0 이하 버전 mWebView.loadData(str,  “text/html; charset=UTF-8”, null);  // Android 4.1 이상 버전      

[Android] LogCat의 "E/eglCodecCommon" 관련 로그 숨기기

By | 1월 18, 2021

AndroidStudio 에서 LogCat을 보고 있으면 가끔 E/eglCodecCommon 관련 에러로그들이 로그창을 잡아먹는다.   (예) E/eglCodecCommon: glUtilsParamSize: unknow param 0x00000bd0 E/eglCodecCommon: **** ERROR unknown type 0x73000f (glSizeof,73) …..   얘를 안보려면 LogCat 로그찍는 창 우상단의 select box 클릭 > Edit Filter Configuration 클릭 후 필터를 하나 추가하면 된다. 필터 내용은…   Log Tag:   ^((?!eglCodecCommon).)*$   요렇게 작성하면 되겠다.… Read More »

Android TextView의 textIsSelectable 속성 사용시 주의점

By | 1월 18, 2021

관성스크롤기능 구현을 위해서 ScrollView 를 레이아웃 최외각에 두고, 그 안에 ConstraintLayout 을 두고, 그 안에 TextView를 넣고 작업한 적이 있었는데, 롱클릭시 텍스트를 선택 가능하게 하기 위해서 textIsSelectable 속성을 true로 주고 별 짓을 다 해도 텍스트 선택이 안되는 문제가 있었다. 그래서 상당시간 삽질을 하다가 ScrollView 를 한 depth 아래로 내렸더니 텍스트 선택이 문제없이 되었다. (결국, ScrollView가 최외각에… Read More »

Android DialogFragment 크기 조정 하려다가 잘 안돼서 흐지부지된 코드

By | 1월 18, 2021

제목 그대로임. 왜 잘 안됐는지는 주석에 표시함. public class APICallResultFragment extends DialogFragment { //===================================== Fragment Lifecycle Callbacks – start ===================================== /** * Only for DialogFragment * * @param savedInstanceState * @return */ @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); LayoutInflater inflater = getActivity().getLayoutInflater(); View view = inflater.inflate(R.layout.fragment_apicall_result, null); builder.setView(view) .setNegativeButton(“닫기”, new… Read More »

[Android] Navigation Drawer 내의 이미지에 이벤트 바인딩 하기

By | 1월 18, 2021

제목 그대로임   /** * 레프트메뉴의 로고이미지에 클릭 이벤트 바인딩 (ButterKnife로 구현하기에 어려워서 원래 방법대로 함) */ private void setNavLogoOnClickListener() { NavigationView navView = (NavigationView)findViewById(R.id.nav_view); View headerView = navView.getHeaderView(0); ImageView logo = (ImageView) headerView.findViewById(R.id.logo_in_nav); logo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ((DrawerLayout) findViewById(R.id.drawer_layout)).closeDrawer(GravityCompat.START); // 레프트메뉴 닫기 goMain(); // 메인페이지로 } }); } ※… Read More »

[Android] Navigatin Drawer 내 각 메뉴간 구분선 나누기

By | 1월 18, 2021

말보다는 코드로! <?xml version=”1.0″ encoding=”utf-8″?> <menu xmlns:android=”http://schemas.android.com/apk/res/android”> <!– 메뉴간 구분선을 위해서 group을 지어 주었음 –> <group android:id=”@+id/menu_01″ android:checkableBehavior=”none”> <item android:id=”@+id/nav_authNew” android:title=”메뉴 1″/> <item android:id=”@+id/nav_authOldApp” android:title=”메뉴 2″ /> <item android:id=”@+id/nav_authOldWeb” android:title=”메뉴 3″ /> </group> <group android:id=”@+id/menu_02″ android:checkableBehavior=”none”> <item android:id=”@+id/nav_APICall” android:title=”메뉴 4″ /> </group> <group android:id=”@+id/menu_03″ android:checkableBehavior=”none”> <item android:id=”@+id/nav_setting” android:title=”메뉴 5″ /> </group> <group android:id=”@+id/menu_04″ android:checkableBehavior=”none”> <item… Read More »

[Android] SnackBar 샘플 코드

By | 1월 18, 2021

말보다는 코딩! DrawerLayout layout = (DrawerLayout)activity.findViewById(R.id.drawer_layout); Snackbar.make(layout, message, Snackbar.LENGTH_INDEFINITE) .setAction(“설정”, new View.OnClickListener() { @Override public void onClick(View v) { // do something } }).show();    

[Android] View(혹은 Layout) 내의 요소(ex: EditText)들을 순회(loop)하면서 각 요소(element)의 id를 key로 하여 SharedPreferences 에 값을 저장하는 샘플코드

By | 12월 29, 2020

* 정의부 /** * view 하위의 특정 TableLayout의 TableRow를 순회하면서 EditText를 찾고, * 각 EditText의 id 문자열로 SharedPreferences(혹은 Constants)를 조회한 결과값을 EditText에 채워 넣는다. * * @param rootView * @param tableLayoutId */ public static void fillSavedDataToForm(View rootView, int tableLayoutId) { TableLayout tableLayout = (TableLayout) rootView.findViewById(tableLayoutId); TableRow tableRow; View tmpView; EditText et; String id, key, val;… Read More »