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
622008
공지
앱개발 질문
[필독] Q&A 게시판 글작성 안내, 질문전 검색 필수!
176
회색
01-29
7
1064744
앱개발 질문
Install한 application을 바로 바탕화면에 icon이나 widget UI를 표시 할 수 있나요?
2
안드
08-11
4812
491
앱개발 질문
main.xml에 새로운 뷰 추가하는 방법질문요!!
1
깡통로봇
08-11
2328
490
앱개발 질문
OnTouch와 OnLongClick 둘다 사용 가능한가요?
2
안드롯
08-11
8699
489
앱개발 질문
TextView 의 marquee 속성에 대해..
7
질풍도깨비
08-12
8095
488
앱개발 질문
뷰 관련 질문입니다.
2
rebmir
08-11
2818
487
앱개발 질문
버튼을 강제로 포커스를 홀드 시키고 싶습니다.
1
ReNi
08-11
3882
486
앱개발 질문
event.getAction()에서 Action_Down만 나옵니다.
2
안드롯
08-11
4671
485
앱개발 질문
에뮬레이터의 속도를 향상시키는 법?
2
하얀늑대
08-11
3317
484
앱개발 질문
.apk를 설치하는 installer를 만들고 싶습니다.
2
닥코마니아
08-11
16053
483
앱개발 질문
URI 데이터베이스에 저장하기
1
피의물결
08-11
3876
482
앱개발 질문
안드로이드 소켓 통신 질문입니다.
2
웅하
08-11
8418
481
앱개발 질문
Application Heap 을 확장하고 싶습니다.
3
SSamDDak
08-10
3356
480
플랫폼 질문
KEY_HOME 키가 먹질 않습니다.
2
ET
08-02
8506
479
앱개발 질문
Images.Media.INTERNAL_CONTENT_URI로 이미지 저장이 가능한지
호두
08-03
3332
478
앱개발 질문
NotePadv2를 하다가 오류 좀 봐주세요.
3
무살해커
08-01
2106
477
앱개발 질문
mp3 앨범 재킷 띄우기
2
앙자
08-03
4103
476
앱개발 질문
CallLog, SMSManager 질문입니다
1
파르마콘
08-01
2687
475
앱개발 질문
getOutputStream() 호출시 프레임이 전송되어 버립니다.
4
박하스
08-03
4993
474
앱개발 질문
ImageButton에서 onLongTouchEvent는 어떻게 발생하나요?
3
ReNi
08-03
3315
473
앱개발 질문
Configuration에 관한 질문입니다.
1
막돼
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";