Skip to content
모두의 공간
개발자 공간
사용자 공간
최근글
로그인
접속유지
회원가입
ID/PW 찾기
모두의 공간
새로운 소식
새로운 게임/앱
개발자 공간
개발자 게시판
개발자 질문/답변
개발자 정보
구인/구직/의뢰
행사/세미나/교육
(구)질문/답변
사용자 공간
앱 정보/후기
게임 정보/후기
기기 정보/후기
잡담/유머/창작
개발자 질문/답변 게시판이 새로운 공간으로 이전되었습니다.
안드로이드 개발 질문/답변 (글 수
45,052
)
전체보기
앱개발 질문
플랫폼 질문
JAVA 질문
기타 질문
자주하는 질문
Install한 application을 바로 바탕화면에 icon이나 widget UI를 표시 할 수 있나요?
안드
https://www.androidpub.com/android_dev_qna/21009
2009.08.11
16:55:59
4812
2
앱개발 질문
안녕하세요,
보통 Application을 Download 하고 Install하면 Launcher에 설치가 되고
사용자는 필요한 경우 바탕화면에 Icon을 위치시키는데요,
사용자 행위 없이 Install하자 바로 바로 바탕화면에 Icon이나 Widget을 Display할 수 있는 방법이 있나요?
있으면 어떻게 하는지 알려 주시면 감사하겠습니다.^^
이 게시물을
목록
2009.08.11
17:52:45
노쑤
launcher 소스를 보시며 도움이 될듯합니다.
(저도 해보진 않았습니다. 아래 설명은 전부 추측입니다. 시간나면 저도 해보고 싶군요)
위젯이나 쇼컷 등록하시고 나면
$ adb -e shell
# sqlite3 /data/data/com.android.launcher/databases/launcher.db
sqlite> select * from favorites;
적용된걸 확인 하실 수 있습니다.
결국 저 DB에 액세스 해서 업데이트 해야되는데...
launcher에서 LauncherProvider를 제공해주니.. 그쪽 통해서 적절하게 업데이트 하시면 될껍니다.
$ vi ./packages/apps/Launcher/src/com/android/launcher/Launcher.java
591 /**
592 * Add a shortcut to the workspace.
593 *
594 * @param data The intent describing the shortcut.
595 * @param cellInfo The position on screen where to create the shortcut.
596 * @param insertAtFirst
597 */
598 private void completeAddShortcut(Intent data, CellLayout.CellInfo cellInfo,
599 boolean insertAtFirst) {
600 cellInfo.screen = mWorkspace.getCurrentScreen();
601 if (!findSingleSlot(cellInfo)) return;
602
603 final ApplicationInfo info = addShortcut(this, data, cellInfo, false);
604
605 if (!mRestoring) {
606 sModel.addDesktopItem(info);
607
608 final View view = createShortcut(info);
609 mWorkspace.addInCurrentScreen(view, cellInfo.cellX, cellInfo.cellY, 1, 1, insertAtFirst);
610 } else if (sModel.isDesktopLoaded()) {
611 sModel.addDesktopItem(info);
612 }
613 }
$ vi ./packages/apps/Launcher/src/com/android/launcher/LauncherModel.java
612 private static void updateShortcutLabels(ContentResolver resolver, PackageManager manager) {
613 final Cursor c = resolver.query(LauncherSettings.Favorites.CONTENT_URI,
614 new String[] { LauncherSettings.Favorites.ID, LauncherSettings.Favorites.TITLE,
615 LauncherSettings.Favorites.INTENT, LauncherSettings.Favorites.ITEM_TYPE },
616 null, null, null);
617
618 final int idIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.ID);
619 final int intentIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.INTENT);
620 final int itemTypeIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.ITEM_TYPE);
621 final int titleIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.TITLE);
622
623 // boolean changed = false;
647 resolver.update(
648 LauncherSettings.Favorites.CONTENT_URI_NO_NOTIFICATION,
649 values, "_id=?",
650 new String[] { String.valueOf(c.getLong(idIndex)) });
651
652 // changed = true;
653 }
$ vi ./packages/apps/Launcher/src/com/android/launcher/LauncherProvider.java
52 public class LauncherProvider extends ContentProvider {
53 private static final String LOG_TAG = "LauncherProvider";
54 private static final boolean LOGD = true;
55
56 private static final String DATABASE_NAME = "launcher.db";
57
58 private static final int DATABASE_VERSION = 3;
59
60 static final String AUTHORITY = "com.android.launcher.settings";
2009.09.29
10:57:48
노쑤
icon은 xml에 추가하셔도 잘작동되는군요... 사용자 widget은 잘 안되네요
전체보기
앱개발 질문
플랫폼 질문
JAVA 질문
기타 질문
자주하는 질문
조회
추천
날짜
최근 수정일
공지
앱개발 질문
게시글 작성시 소스코드를 보기 쉽게 처리하기
33
멍멍대왕
622013
5
2010-01-21
2013-02-17 14:05
공지
앱개발 질문
[필독] Q&A 게시판 글작성 안내, 질문전 검색 필수!
176
회색
1064747
7
2010-01-29
2020-09-21 15:37
앱개발 질문
Install한 application을 바로 바탕화면에 icon이나 widget UI를 표시 할 수 있나요?
(
2
)
안드
2009.08.11
조회
4812
앱개발 질문
main.xml에 새로운 뷰 추가하는 방법질문요!!
(
1
)
깡통로봇
2009.08.11
조회
2328
앱개발 질문
OnTouch와 OnLongClick 둘다 사용 가능한가요?
(
2
)
안드롯
2009.08.11
조회
8699
앱개발 질문
TextView 의 marquee 속성에 대해..
(
7
)
질풍도깨비
2009.08.12
조회
8095
앱개발 질문
뷰 관련 질문입니다.
(
2
)
rebmir
2009.08.11
조회
2818
앱개발 질문
버튼을 강제로 포커스를 홀드 시키고 싶습니다.
(
1
)
ReNi
2009.08.11
조회
3882
앱개발 질문
event.getAction()에서 Action_Down만 나옵니다.
(
2
)
안드롯
2009.08.11
조회
4671
앱개발 질문
에뮬레이터의 속도를 향상시키는 법?
(
2
)
하얀늑대
2009.08.11
조회
3317
앱개발 질문
.apk를 설치하는 installer를 만들고 싶습니다.
(
2
)
닥코마니아
2009.08.11
조회
16054
앱개발 질문
URI 데이터베이스에 저장하기
(
1
)
피의물결
2009.08.11
조회
3876
앱개발 질문
안드로이드 소켓 통신 질문입니다.
(
2
)
웅하
2009.08.11
조회
8419
앱개발 질문
Application Heap 을 확장하고 싶습니다.
(
3
)
SSamDDak
2009.08.10
조회
3356
플랫폼 질문
KEY_HOME 키가 먹질 않습니다.
(
2
)
ET
2009.08.02
조회
8506
앱개발 질문
Images.Media.INTERNAL_CONTENT_URI로 이미지 저장이 가능한지
호두
2009.08.03
조회
3332
앱개발 질문
NotePadv2를 하다가 오류 좀 봐주세요.
(
3
)
무살해커
2009.08.01
조회
2106
앱개발 질문
mp3 앨범 재킷 띄우기
(
2
)
앙자
2009.08.03
조회
4103
앱개발 질문
CallLog, SMSManager 질문입니다
(
1
)
파르마콘
2009.08.01
조회
2687
앱개발 질문
getOutputStream() 호출시 프레임이 전송되어 버립니다.
(
4
)
박하스
2009.08.03
조회
4993
앱개발 질문
ImageButton에서 onLongTouchEvent는 어떻게 발생하나요?
(
3
)
ReNi
2009.08.03
조회
3315
앱개발 질문
Configuration에 관한 질문입니다.
(
1
)
막돼
2009.07.31
조회
3575
목록
쓰기
첫 페이지
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
끝 페이지
최근 인기글
개발자 질문/답변 게시판이 새로운 공간으로 이전되었습니다.
제목+내용
제목
내용
댓글
이름
닉네임
태그
검색
취소
Close Login Layer
XE Login
아이디
비밀번호
로그인 유지
OpenID Login
Open ID
회원가입
ID/PW 찾기
인증메일 재발송
OpenID
OpenID
Close Login Layer
(저도 해보진 않았습니다. 아래 설명은 전부 추측입니다. 시간나면 저도 해보고 싶군요)
위젯이나 쇼컷 등록하시고 나면
$ adb -e shell
# sqlite3 /data/data/com.android.launcher/databases/launcher.db
sqlite> select * from favorites;
적용된걸 확인 하실 수 있습니다.
결국 저 DB에 액세스 해서 업데이트 해야되는데...
launcher에서 LauncherProvider를 제공해주니.. 그쪽 통해서 적절하게 업데이트 하시면 될껍니다.
$ vi ./packages/apps/Launcher/src/com/android/launcher/Launcher.java
591 /**
592 * Add a shortcut to the workspace.
593 *
594 * @param data The intent describing the shortcut.
595 * @param cellInfo The position on screen where to create the shortcut.
596 * @param insertAtFirst
597 */
598 private void completeAddShortcut(Intent data, CellLayout.CellInfo cellInfo,
599 boolean insertAtFirst) {
600 cellInfo.screen = mWorkspace.getCurrentScreen();
601 if (!findSingleSlot(cellInfo)) return;
602
603 final ApplicationInfo info = addShortcut(this, data, cellInfo, false);
604
605 if (!mRestoring) {
606 sModel.addDesktopItem(info);
607
608 final View view = createShortcut(info);
609 mWorkspace.addInCurrentScreen(view, cellInfo.cellX, cellInfo.cellY, 1, 1, insertAtFirst);
610 } else if (sModel.isDesktopLoaded()) {
611 sModel.addDesktopItem(info);
612 }
613 }
$ vi ./packages/apps/Launcher/src/com/android/launcher/LauncherModel.java
612 private static void updateShortcutLabels(ContentResolver resolver, PackageManager manager) {
613 final Cursor c = resolver.query(LauncherSettings.Favorites.CONTENT_URI,
614 new String[] { LauncherSettings.Favorites.ID, LauncherSettings.Favorites.TITLE,
615 LauncherSettings.Favorites.INTENT, LauncherSettings.Favorites.ITEM_TYPE },
616 null, null, null);
617
618 final int idIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.ID);
619 final int intentIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.INTENT);
620 final int itemTypeIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.ITEM_TYPE);
621 final int titleIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.TITLE);
622
623 // boolean changed = false;
647 resolver.update(
648 LauncherSettings.Favorites.CONTENT_URI_NO_NOTIFICATION,
649 values, "_id=?",
650 new String[] { String.valueOf(c.getLong(idIndex)) });
651
652 // changed = true;
653 }
$ vi ./packages/apps/Launcher/src/com/android/launcher/LauncherProvider.java
52 public class LauncherProvider extends ContentProvider {
53 private static final String LOG_TAG = "LauncherProvider";
54 private static final boolean LOGD = true;
55
56 private static final String DATABASE_NAME = "launcher.db";
57
58 private static final int DATABASE_VERSION = 3;
59
60 static final String AUTHORITY = "com.android.launcher.settings";