일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- not working
- WebView
- 안드로이드 gcm
- html5
- C#
- dovecot
- FCM
- chart.js
- UML
- 안드로이드
- android 효과음
- Mail Server
- php 시큐어코딩
- 폼메일
- Android
- PHP
- mysql
- xe
- 안드로이드 푸시
- 안드로이드 푸쉬
- php 취약점
- C# IO
- soundpool
- roundcube
- javascript
- 우분투
- curl
- 자동 생성
- 설치
- 자바스크립트
- Today
- Total
목록android (125)
그러냐
안드로이드 버젼이 올라가면서 어플 아이콘의 디자인도 안드로이드 스튜디오에서 lagacy 와 adaptive 두가지 겸용으로 셋팅을 하게 되었다 처음에는 lagacy only로 기존 처럼 셋팅하였으나 앱스토어에 올릴때 뭔가 안된다더라 그래서 adaptive도 포함하게 되었는데 검색해보면 알겠지만 원리가 다르다 두 겹으로 되어 있다 그래서 배경을 투명하게 하면 되겠거니 했는데 안된다. 한참 실갱이하다가 https://stackoverflow.com/questions/47722958/transparent-adaptive-icon-background 이 글을 보게 되었다 투명은 안되고, 투명값은 검정이다 그래서 이 글을 참고하여 이래저래 해도 안되서 결국 투명없는 아이콘으로 가기로 했다 기존 아이콘의 음영이나 ..
구글링해보면 대부분 assets 폴더에 html 파일을 넣는 것으로 나온다 하지만 내가 하려는 것은 저장공간에 있는 html파일을 실행시키는 것 몇 년전에 하고 오랜만에 하려니 안되서 환경이 바뀌었나 했는데 권한을 빼먹었다 이 권한이 있어야 sdcard에 있는 html을 웹뷰에서 읽어 올 수 있다 "file:///storage/extSdCard/10.html";이런 식의 경로가 되겠다 if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ Log.d(TAG, "No SDCARD"); } else { webComp.loadUrl("file://"+Environment.getExternalStorageDirectory()+..
구글링을 통해 여러 블로그들을 살펴본 결과 웹소켓 연결은 일정 시간이 흐르면 연결해제가 된다고 한다 그런데 해제된 객체를 가지고 send명령을 하니 익셉션이 발생되는게 아니라 그냥 씹혀버린다 소켓클라이언트 메모리해제가 정상적으로 이뤄지지 않아서인듯 그래서 웹소켓 서버측에서 주기적으로 신호를 보내 연결을 유지하는 방법을 쓴다고 하는데.. 서버측은 내가 만든게 아니라.. 그래서 .isOpen() 이런 함수가 있나 봤는데 내가 사용중인 API는 if(mWebSocketClient.getReadyState()==WebSocket.READYSTATE.OPEN){ mWebSocketClient.send(json.toString()); }이런 식으로 getReadyState() 를 통해 확인할 수 있는듯하다 read..
간단하게 Activity stack 처리하는 방법 (Android)Activity를 그냥 intent생성해서 만들면 계속해서 새로 Activity를 start하고 스택으로 쌓이는 문제가 발생한다. 예를 들어서 A, B, C Activity를 A->B->C->A->C->B로 이동하고 뒤로가기를 누르면 다시 화면이 B->C->A->C->B->A 순으로 왔던 순서 반대로 나타난다. 그래서 뜨면 안될 화면도 뜨게 된다. (*회원가입 화면이 그대로 다시뜬다던가 삭제한 화면이 뜬다던가 등) 혹은 그냥 다시 뒤로가면 되는 화면인데 새로운 화면을 만들어서 그 위에 쌓아나간다. 여기서 생기는 두가지 문제, 1. 접근해선 안되는 이전화면으로 돌아가버린다. 2. 굳이 이전 화면의 Activity를 새로 생성해서 위에 쌓는다..
리스트뷰 더 보기 기능을 한눈에 알기 쉽게 설명하여 포스팅을 긁어왔다참고. 출처 : http://theeye.pe.kr/archives/1287[Android] 동적으로 다음페이지를 로딩하는 ListView 구현6 Comments아이폰의 수많은 UITableView를 활용하는 어플리케이션을 보면 참 퀄리티 높게 잘 만든것이 자동으로 리스트의 가장 아래로 내려가면 알아서 다음페이지를 로딩하는 기능이 아닐까 싶습니다. 안드로이드에서도 요즘은 많은 어플리케이션이 해당 기능을 구현하고 있습니다. 안드로이드에서는 리스트뷰와 데이터간에 Adapter라는 디자인패턴을 활용하고 있어 아이폰의 그것과는 같은 기능이라도 구현하는 방식이 다릅니다.안드로이드에서는 좀 더 적극적으로 Adapter를 활용하여 이 기능을 구현해야..
[Android] RecyclerView 의 최상단과 최하단 스크롤 이벤트 감지하기RecyclerView 를 사용하다 보면 가끔 최상단과 최하단의 이벤트 감지가 필요하다(특히 채팅방에서의 예전채팅을 가져온다거나 포스팅의 다음 포스팅 로딩 처럼 페이징 로딩 처리시에 필요하다)예전 ListView 시절부터 이런 문제는 보통(구글링하면 첫페이지에 나오는 자료들)int visibleItemCount = layoutManager.getChildCount(); int totalItemCount = layoutManager.getItemCount(); int pastVisibleItems = layoutManager.findFirstCompletelyVisibleItemPosition(); if(pastVisible..
요즘 많은 어플리케이션을 사용하다보면, 사용자간의 소통을 위한 기능으로 채팅기능을 제공하고 있습니다. 실제로 현업에서 개발을 진행하다보면 채팅은 필수기능으로 꼽힐 정도로 사용자의 니즈가 많은 것 같습니다.최근들어 제가 속해 있는 스타트업에서는, 채팅기능에 대한 사용자의 피드백과 필요성을 많이 느끼고 있음을 알고, 개발팀에서는 실제 본격적인 개발에 들어가기에 앞서, 채팅기능에 대한 검토와 프로토타이핑을 진행하고 있습니다.요즘은 기술이 많이 발전하여 채팅을 구현한다고하면 socket통신 / mqtt / xmpp 등 많은 기술스택을 생각할 수 있지만, 저희는 현재 node.js를 이용하여 back-end를 개발해왔으며, npm의 module중 socket통신과 관련된 유명한 module인 socket.io를 ..
서버쪽이 이미 구성되어 있다는 가정으로 정리한 코드이다.일단 안드로이드 스튜디오에서 socket.io 를 추가한다. 모듈로 추가하는 방법은 http://naminsik.com/blog/3640여기에 써 놓았다. 그럼 본격적으로 코드를 작성한다.AndroidManifest.xml 안에 안에 아래 코드를 넣어준다.1아래 코드들을 MainActivity.java 에 작성하는 코드이다. 상단에 임포트 코드를 넣어준다.123import com.github.nkzawa.emitter.Emitter;import com.github.nkzawa.socketio.client.IO;import com.github.nkzawa.socketio.client.Socket;그런 후에 public class MainActivity..
안드로이드/Android Cursor를 이용한 DB 데이터 사용 하기 ~ ! 안드로이드에서는 DB에서 가져온 데이터를 쉽게 처리하기 위해서 Cursor 라는 인터페이스를 제공해 줍니다. Cursor는 기본적으로 DB에서 값을 가져와서 마치 실제 Table의 한 행(Row), 한 행(Row) 을 참조하는 것 처럼 사용 할 수 있게 해 줍니다. 개발자는 마치 그 행(Row) 을 가지고 행(Row)에 있는 데이터를 가져다가 쓰는 것 처럼 사용하면 되는 편의성을 제공받게 됩니다. 1) 기본적인 DB 필드 구조. Cursor는 SQLiteDatabase 에서 얻어오 실제 DB 값을 가지고 마치 테이블의 행(Row)를 하나하나 이동하며 참조하는듯 Data를 처리해 줍니다. 실제 Cursor의 동작은 이렇게 동작한다..
Spinner area1 = (Spinner) findViewById(R.id.wish_area1); ArrayAdapter myAdap = (ArrayAdapter) area1.getAdapter(); int spinnerPosition = myAdap.getPosition(area_args[0]); area1.setSelection(spinnerPosition);[출처] spinner 기존출력된 값의 selected 변경시키기|작성자 멋쟁이