2017년 2월 28일 화요일

How to write to external storage on odroid(marshmallow android 6.0.1).

You maybe install utorrent app, but you can't download torrent file in external storage installed android 6.0.1(marshmallow).


Edit packages.xml.

$ su
# vi /data/system/packages.xml

<package name="com.utorrent.client" codePath="/data/app/com.utorrent.client-1" nativeLibraryPath="/data/app/com.utorrent.client-1/lib" primaryCpuAbi="armeabi-v7a" publicFlags="940097092" privateFlags="0" ft="15a648b6388" it="15a648b6f1f" ut="15a648b6f1f" version="245" userId="10069" installer="com.android.vending">
        ...
        <perms>
            ...
            <item name="android.permission.ACCESS_WIFI_STATE" granted="true" flags="0" />
            <item name="android.permission.WAKE_LOCK" granted="true" flags="0" />
            <item name="android.permission.WRITE_MEDIA_STORAGE" granted="true" flags="0" />
        </perms>


or hacking frameworks.


diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index 647c17b..1ec1fe7 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -22,6 +22,7 @@ import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED
 import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER;
 import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
 import static android.Manifest.permission.READ_EXTERNAL_STORAGE;
+import static android.Manifest.permission.WRITE_MEDIA_STORAGE;
 import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS;
 import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER;
 import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED;
@@ -1935,6 +1936,8 @@ final class Settings {
             return;
         }

+        boolean isMediaStoragePermission = false;
+
         serializer.startTag(null, TAG_PERMISSIONS);

         for (PermissionState permissionState : permissionStates) {
@@ -1943,6 +1946,19 @@ final class Settings {
             serializer.attribute(null, ATTR_GRANTED, String.valueOf(permissionState.isGranted()));
             serializer.attribute(null, ATTR_FLAGS, Integer.toHexString(permissionState.getFlags()));
             serializer.endTag(null, TAG_ITEM);
+
+            if (!isMediaStoragePermission
+                    && permissionState.getName().equals(WRITE_MEDIA_STORAGE)) {
+                isMediaStoragePermission = true;
+            }
+        }
+
+        if (!isMediaStoragePermission) {
+            serializer.startTag(null, TAG_ITEM);
+            serializer.attribute(null, ATTR_NAME, WRITE_MEDIA_STORAGE);
+            serializer.attribute(null, ATTR_GRANTED, "true");
+            serializer.attribute(null, ATTR_FLAGS, Integer.toHexString(0));
+            serializer.endTag(null, TAG_ITEM);
         }

         serializer.endTag(null, TAG_PERMISSIONS);

Automatically permission string is inserted in packages.xml.


After install app from Market you must reboot system.


2017년 1월 7일 토요일

후쿠오카, 구로카와 온천 여행 팁

일본 여행에 필수 220v-110v 어텁터를 준비한다.
충전기 두개라서 2개를 준비 했다.



면세점을 여유 있게 쇼핑하려면 최소 두시간 전에는 도착하자.
한 시간 전에 도착 했지만 사람이 많아서 비행기 티켓 찾고 입국 심사를 하는데 겨우 담배 2보루 사고 출발 10분 전에 비행기에 탑승했다.

산큐패스는 미리 하나투어같은 여행 사이트에서 주문한다.
일본 현지에서 사는것 보다 싸다고 한다.

미리 주문하지 못하려 여행전까지 택배 도착이 걱정 되어 직접 수령하러 강남까지 다녀왔다..
http://www.hanatour.com/asp/booking/pass/ps-20000.asp?compCode=B00002&prdMstCode=J10PS13

아래와 같이 카톡으로 알려 준다.



이렇게 생겼다.


데이터 로밍을 알아봤는데 일본은 3G로 연결되고 그리고 잘 끊어진다는 정보에 와이드모바일 에그를 예약했다.
가격은 3일에 2만원이 안되는 요금이다. 여기에 두사람이니 더욱 더 저렴해 진다.
기존에 사용하던 보조밧데리가 하나 있지만 두사람이라서 밧데리도 2개 추가 하였다. 하지만 에그 단말기가 생각보다 밧데리가 오래 가기 때문에 필요하지 않았다. 한 10시간 정도는 가는 것 같다.
아래 사이트에서 예약하고 인천국제공항 1층 7번 출구에서 받아 갈 수 있다.
http://www.widemobile.com/v3/index.aspx


아래와 같이 두사람이 이 에그에 접속하여 있다.


대여한 보조 밧데리이다. 이중 중에 충전하고 있다.


단점은 여러 사람일 경우 와이파이에그에서 떨어지면 연락한 방법이 애매하다.

일본 고속버스 사이트에서 좌석을 예약하고 출력한다.

https://www.highwaybus.com/

크롬 브라우저에서 번역이 잘된다. 몇몇 그림은 번역이 안되지만 대충 감으로 알 수 있다.


후쿠오카 공항에서 1층 2번 버스 타는 곳에서 하카타행 버스를 기다린다. 버스가 자주 있지 않다. 산큐패스를 내릴때 보여주면 된다.
국제선 건물에서 나와 4개의 버스 정류장이 있는데 2번으로 가면 바닥에 하카타라고 쓰여 있다.
블로그를 작성하는 기준으로 시간표는 아래와 같다.




하카타 버스 터미날에 도착하면 3층에가서 예약 내용 프린트와 산큐 패스를 보여주면 표를 준다. 물론 오는 날 표까지 미리 준다. 잘 챙겨 놓자.







구로카와 온천에서 하카타로 오는 버스는 예매시 삼각형으로 표시 되었는데 예약이 많아서 두 좌석이 떨어져 예약이 되었다. 그래서 여행전 미리 예약하자.
출발 당시 기사분께서 두 좌석이 떨어져 있는거에 대해서 한국인이라서 그런지 매우 미안해 했던 기억이 인상적이다.
우리나라에서 있을 수 없는 일이어서 기억이 난다.

하카타 버스 터미날 5층에 다이소가 있다. 한국에 없는 일본 다이소에만 있는 물건들을 구매 하였다.





하카타역으로 이동하여 점심을 먹는다. 라멘은 캐널 시티에서 먹을꺼라 다른 메뉴를 찾아본다.

구로카와 버스는 하루 4번 밖에 운행하지 않는다.

하카타에서 출발한 버스는 텐진, 후쿠오카 공항으로 가서 구로카와로 간다. 말이 고속버스지 정차도 많이 하고 천천히? 가서 3시간 걸린다.

특이하게 버스에 화장실이 있다.




도착하면 료칸에서 온 직원이 픽업이 온다.
체크인후
석식, 조식 시간을 물어본다.
오규갸야는 두개의 프라이빗(가족)탕이 있다.
연인끼리 가신분들은 여기를 이용하면 된다. 따로 예약을 하지 않고 사용하는 사람이 없으면 들어가서 문 잠그고 사용하면 된다.
그리고 몇개의 노천탕이 있고 하루씩 남여가 바꿔서 입장한다.
따라서 혼탕이 아니기 때문에 수영복이 필요 없다.

짐을 풀고 바로 마을 구경을 나섰다.



하지만 겨울이라 해가 빨리지고 어두워지기 시작해서 사진을 겨우 찍었다.












석시 예약 시간이 되면 인터폰으로 알려주고 데리러 온다.
조식은 인터폰으로 알려주고 어제 먹은 방으로 가서 먹으면 된다.
료칸에서 저녁, 아침 식사가 나오기 때문에 따로 군것질 할 필요가 없을 만큼 배가 부르다.






프라이빗 탕

석식 사진이다. 그리고 유카타를 주기 때문에 따로 잠옷은 필요 없다.


말고기 육회다. 조금 찔긴 쇠고기 같다.




식사 후 노천탕으로 갔다.










다음날 아침에 다른 프라이빗 탕을 이용해 보았다.



노천탕은 하루 마다 여자 남자 바꿔가면 사용하도록 되어 있어서 아침은 다른 노천탕의 사진이다.







온천 후 조식을 했다.



미리 짐을 들고 체크아웃하고 료칸 이용료를 지불한다.
그리고 마을 구경을 하였다.


















체크아웃후 역시 차로 버스정류장까지 모셔준다.
버스는 후쿠오카 공항에서 하카타 버스 터미날로 간다.



하카타역에서 캐널시티까지는 걸어서 넉넉잡고 15분 정도면 걸어간다.
후쿠오카의 서울보도 겨울은 7도 이상 따뜻하기 때문에 늦가을 복장으로 간다.





캐널시티는 매우 넓다.







라멘 스타디움으로 가서 라멘을 먹고...







MUJI , FRANC franc, 등등 쇼핑한다.




나카스는 유흥가이기 때문에 가족, 연인들은 섬 안 쪽까지 들어가지 말기 바란다.
포장마차는 캐널시티에서 섬으로 넘어가는 다리에서 왼쪽으로 진입하면 보인다.
별거 없다.





12시 비행기라 아침에 뭔가 할 시간이 애매하다.

캐널시티 호텔에서는 짐을 맡아주니 짐 챙겨 내려와서 프런트에 맡기고 걸어서 10분거리에 스미요시 신사가 있다. 구경하고 편의점에서 식사 후 공항으로 출발.





















호텔에 한국 여행객 프린트물에서 나카스에 미나미 신지에서 출발하는 후쿠오카 공항까지 80번 버스를 타면 된다고 나와 있지만 80번 버스가 정류소에 없었다.
버스로 하카타 버스 터미날가서 공항 가는 버스를 탄다.







후쿠오카 공항은 매우 작은 공항이다 표를 찾고 뒤에 보이는 특산물 면세점이 있고 출입국 심사후 더 큰 면세점이 있으니 들어가서 사도 된다.





비행기 시간 때문에 첫날 온천을 잡았는데 3일 일정이면 첫날 후쿠오카 관광, 쇼핑하고 이틀째 온천가서 휴식하고 바로 공항가서 돌아오는게 만족도가 높을것 같다. 참고 하시기 바랍니다.