오늘의 스레기 니코니코동화 공식앱. 암시적 인텐트(Implict intent) 공유가 아니라 명시적으로 Facebook, Twitter, 라인 앱 공유만을 지원한다. 암시적 인텐트를 만들어서 공유하면 해당 인텐트를 받을 수 있는 모든 앱에서 공유받을 수 있다.

seen from United States

seen from United States

seen from Türkiye

seen from Austria
seen from Malaysia
seen from Romania

seen from China

seen from Malaysia
seen from Costa Rica

seen from Malaysia
seen from Puerto Rico

seen from Germany

seen from Sweden
seen from United States

seen from Malaysia
seen from Greece

seen from Costa Rica

seen from United States
seen from China
seen from T1
오늘의 스레기 니코니코동화 공식앱. 암시적 인텐트(Implict intent) 공유가 아니라 명시적으로 Facebook, Twitter, 라인 앱 공유만을 지원한다. 암시적 인텐트를 만들어서 공유하면 해당 인텐트를 받을 수 있는 모든 앱에서 공유받을 수 있다.
간편하지만 불안정한 TextView 링크 다루기
TextView에는 링크 기능이 있다.
android:autoLinks 속성을 none 이외의 다른것으로 바꾸면 별도의 처리 없이 본문 내의 이메일, 웹 주소등을 알아서 클릭 가능한 링크로 바꾼다.
android:linksClickable을 true로 두고
직접 Spanned를 길게 이어 붙일 경우 ClickableSpan의 자식 클래스를 구현하거나 맘 편하게 UrlSpan을 사용한다. TextView.setText()가 받는 것이 CharSequence라 Spanned를 받는게 가능하다.
하지만 나는 귀찮으니 Html.fromHtml()를 사용한다. 모든 엘리먼트를 지원하지 않으니 소스를 까보면 된다. 그냥 switch문 안에 다 있다.
그리고 공통적으로
textView.setMovementMethod(new LinkMovementMethod());
를 해준다. 기본 셋팅으로는 링크 클릭해도 다루질 않음.
나는 ContentProvider에서 이미지를 제외한 대부분의 데이터를 제공하게 하고 Intent.ACTION_* 시리즈에 각각 알맞는 Activity를 붙여놓는지라 위의 방법을 선호한다. 그런데 사소한 문제가 있다. URL만 가지고 모든 호출을 할 수 없다. URLSpan 내부적으로 주어진 URL은 Intent의 data로만 취급하고 Action으로는 Intent.ACTION_VIEW를 주기 때문에 intent: 스키마로 시작하는 URL을 사용해도 시스템은 응답하지 않는다.
그런데 마침 매우 Intent.ACTION_WEB_SEARCH 액션에 SearchManager.QUERY를 extra 데이터로 넣어서 시스템 기본 웹 검색 제공자를 호출하고 싶다. 여러가지 방법이 있겠으나 다음과 같은 방법이 결함은 있어도 제일 편하다. 일단 링크 보시고.
http://stackoverflow.com/a/3452944/192243
그럼 이제 프록시를 만들어보면…
소스 코드 gist 링크
이렇게 되니까 알아서 하면 된다.
결함이 뭐죠
저런 암시적인(Implict) Intent 호출은 시스템 전체의 Activity를 모두 호출 대상으로 두기 때문에 같은 Intent 필터를 걸어놓을 경우 막을 수가 없다. 그럴 경우 어떤 앱(사실은 Activity다)으로 열거냐고 물어보는데 보기에도 그리 좋지 않고 앱이 망가진듯한 느낌을 준다.
지금같이 날로 먹으려 하는 상황에서는 URLSpan에 URL밖에 넘길 수 없기때문에 대상 패키지 이름이나 컴포넌트 지정도 불가능하다.
그래서 한번 더 엎으러 가려고 합니다. 그럼 이만…
왜 URL의 스킴이 패키지 이름이죠
구글 플레이 스토어에 intent: 받는 앱들 널림. 아마. 그래서 악의적으로 가로채려고 하지 않는 이상 패키지 이름을 쓰면 바로 DummyActivity가 호출될거라서임.
액티비티 하나 더 띄우면 잔상 안남나요
onCreate() 에서 setContentView() 안해줘서 괜찮음. finish() 하니까 액티비티 스택에도 안남음. onCreate() 에서 저렇게 하는건 널리 알려진 패턴임. Activity 이외에 저걸 받을 수 있는 방법이 애최 있지도 않음.
앞으로 글을 인용할때는 링크나 인용 형식으로 쓰고 리블로그는 하지 말아야겠다. 리블로그나 좋가요 내역이 모두 섞이니 이건 뭐… 애최 리블로그는 "니부타니마지텐시!" "ㅇㄱㄹㅇ" 같은거나 달아서 올리라고 만들어진듯.
방 참 더럽다…
기프트박스를 받아야겠으니 알파스캔에서 내놓은 AOC 2769 I2769VM 리뷰를 씀. 쓰기만 하면 주는거니 명시했다고 안주진 않겠지…
제원은 다나와같은데서 보면 있는데 각잡고 표기할 이유가 없음. 27인치 IPS패널에 MHL과 DisplayPort를 지원함. MHL과 DP를 지원하는 모니터 중 27인치중에서 제일 쌈.
장점
크고 쌈.
베젤이 얇음.
HDMI 2 DisplayPort 1 D-SUB 1
DDC/CI 지원으로 VGA가 지원하면 컴퓨터에서 모니터 설정 가능.
VESA홀 있음. 덕분에 기프트박스에 스탠드 주는거 끼워서 180도 피봇해서 와식 생활을 즐길수있음.
단점
모니터 OSD에 뭘바라겠냐만 조작이 굼뜨고 후짐. DDC/CI 있어서 다행.
사정상 HDMI-DVI 케이블을 써야할때가 있는데 오디오 케이블을 연결해도 무조건 D-SUB전용임.
커서 애X플러스에서 720p애니 보는데 후져보임.
기타
MHL보고 샀는데 내가 쓰는 Nexus 5나 Nexus 7 (2013)은 모두 Slimport를 씀. ㅋㅋㅋㅋㅋㅋ ㅠㅠㅠ.
보내준 케이블 문제인지 내 몇년묵은 HD5750 문제인지 모니터 문제인지 DisplayPort로 연결시 특정 해상도만 지원함. 문제는 1920×1080이 안됨.
아무튼 누워서 드래곤즈크라운 하니까 좋다.
Continuous Failure
__khris__> 어디 쥐구멍에 숨고싶다
왜 부끄러
똥같은거만들어서
하루이틀임?
!!
농심 유루유리
전부터 생각하던 오프닝(땀)
옛날 옛적에 Visual Basic에는 Twip이란게 있었죠. Android의 dip같이 해상도 독립적인 단위였음. 하지만 난 픽셀 단위로 다 바꾸곤했고 그 결과는…
해상도가 높으면 높은대로 눈빠지게 써야하는, OS에서 고배율 설정을 아무리 해도 앱에서 따라주지 않아서 다시 100%로 놓고 쓰는 슬픈 컴퓨팅을 해야함. 맥 아닌 PC환경은 이렇게 제자리 걸음중. 아, 저 맥 안씁니다.
앞뒤 안가리고 MS까지 맙시다… 흑흑.