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
멍멍대왕
01-21
5
621999
공지
앱개발 질문
[필독] Q&A 게시판 글작성 안내, 질문전 검색 필수!
176
회색
01-29
7
1064730
512
앱개발 질문
버튼을 강제로 포커스를 홀드 시키고 싶습니다.
1
ReNi
08-11
3882
511
앱개발 질문
event.getAction()에서 Action_Down만 나옵니다.
2
안드롯
08-11
4671
510
앱개발 질문
에뮬레이터의 속도를 향상시키는 법?
2
하얀늑대
08-11
3317
509
앱개발 질문
.apk를 설치하는 installer를 만들고 싶습니다.
2
닥코마니아
08-11
16053
508
앱개발 질문
URI 데이터베이스에 저장하기
1
피의물결
08-11
3876
507
앱개발 질문
안드로이드 소켓 통신 질문입니다.
2
웅하
08-11
8418
506
앱개발 질문
Application Heap 을 확장하고 싶습니다.
3
SSamDDak
08-10
3356
505
앱개발 질문
[질문] 부팅 후 Service 서비스 실행시 중지 현상이유를 알고싶습니다.
2
고글
08-10
7924
504
앱개발 질문
sdcard albumthumbs폴더에 관하여
앙자
08-10
6237
503
앱개발 질문
Bar code를 Android로 구현한 자료를 부탁합니다.
1
금성
08-10
2189
502
플랫폼 질문
Lock Screen 나오게 하는 법이?
윈드지니
08-10
5723
501
앱개발 질문
Activity간 연동 관련 질문.
5
리핵
08-10
2518
500
앱개발 질문
이미지를 데이타베이스에 저장
1
피의물결
08-09
2210
499
앱개발 질문
안드로이드 라이너 레이아웃 질문.
Google
08-08
2228
498
앱개발 질문
이미지 관련 질문입니다.
rebmir
08-08
2133
497
앱개발 질문
지도 표시하려고 하는데 import com.google.android.map.*; 를 인식못하네요
2
헐쿠
08-08
10275
496
앱개발 질문
레이아웃 컴포넌트들의 위치를 고정할 수 있는 레이아웃이 따로 있나요?
2
커니
08-08
4144
495
앱개발 질문
Sensor Orientation 관련 질문
1
하늘의소년
08-07
2278
494
앱개발 질문
Camera app. 관련한 예전(?) 코드를 보고 싶습니다.
1
크크크
08-07
2603
493
앱개발 질문
어플리케이션 실행시 Back 버튼과 Home 버튼 클릭시 현재 상태 정보 저장에 관련하여 질문드립니다.
4
드롱
08-07
8090
목록
쓰기
첫 페이지
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
끝 페이지
최근 인기글
개발자 질문/답변 게시판이 새로운 공간으로 이전되었습니다.
제목+내용
제목
내용
댓글
이름
닉네임
태그
검색
취소
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";