이번에 기능추가할 부분이 있어 찾아보면서 예제를 만들고
자료가 별로 없는 것 같기도 하고 해서 포스팅해봅니다.
코드가 그리 길지 않기 때문에 쉽게 이해할 수 있을 것 같습니다.
우선 매니페스트 파일에 다음과 같은 퍼미션을 지정해 주셔야 합니다.
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"/>
말그대로 shortcut을 설치 / 삭제 하는 퍼미션입니다.
코드는 아래와 같습니다.
버튼1은 shortcut을 추가하는 부분
버튼2는 shortcut을 삭제하는 부분입니다.
shortcut으로 등록하는 것은 제가 필요한 부분이 전화를 거는 shortcut이라서
전화를 거는 intent를 등록하고 shortcut을 생성했습니다.
원하시는 기능에 따라서 바꿔주시면 되겠습니다.
1 public class ShortCutCreate extends Activity{
2 3 private static final String INSTALL_SHORTCUT = "com.android.launcher.action.INSTALL_SHORTCUT"; 4 private static final String UNINSTALL_SHORTCUT = "com.android.launcher.action.UNINSTALL_SHORTCUT"; 5 private static final String INSTALL = "install"; 6 private static final String UNINSTALL = "uninstall"; 7 private Button createBtn, deleteBtn; 8 private String name = "test-"; 9 private int num = 0; 10 11 @Override 12 protected void onCreate(Bundle savedInstanceState) { 13 super.onCreate(savedInstanceState); 14 setContentView(R.layout.service_shortcut); 15 16 initResources(); 17 setListener(); 18 } 19 20 public void initResources() { 21 createBtn = (Button) findViewById(R.id.createBtn); 22 deleteBtn = (Button) findViewById(R.id.delBtn); 23 } 24 25 public void setListener() { 26 27 OnClickListener shortcutListener = new OnClickListener() { 28 @Override 29 public void onClick(View v) { 30 switch(v.getId()) { 31 case R.id.createBtn: 32 //createShortcutIntent(name, num); 33 shortcutIntent(name, num, INSTALL); 34 break; 35 case R.id.delBtn: 36 //removeShortcutIntent(name); 37 shortcutIntent(name, num, UNINSTALL); 38 break; 39 } 40 } 41 }; 42 createBtn.setOnClickListener(shortcutListener); 43 deleteBtn.setOnClickListener(shortcutListener); 44 } 45 46 public void shortcutIntent(String shortcutName, int phoneNum, String type) { 47 Intent shortcutIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:01076455084")); 48 shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 49 shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 50 51 Intent shortcut; 52 if(type.equals(INSTALL)) { 53 shortcut = new Intent(INSTALL_SHORTCUT); 54 Parcelable iconResource = Intent.ShortcutIconResource.fromContext(this, R.drawable.arrow); 55 shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource); 56 shortcut.putExtra("duplicate", false); // // Do not allow duplicate items 57 } else { 58 shortcut = new Intent(UNINSTALL_SHORTCUT); 59 } 60 shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); 61 shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, shortcutName); 62 63 sendBroadcast(shortcut); 64 } 65 }생성과 삭제는 거의 유사한 코드로 이루어졌습니다. 차이점이 있다면 52라인부터 있는 부분입니다.
생성할때는 shortcut중복생성을 막고 생성시 표시할 아이콘을 설치하는 부분이 있습니다.
그리고 생성과 설치의 인텐트 액션값이 다르게 셋팅됩니다.
2011 / 10 / 05 추가사항
shortcut을 추가만 할거라서
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
이 퍼미션만 추가 했더니 shortcut이 추가 되지 않았다.
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"/>
설치/삭제 퍼미션을 둘다 지정해야 제대로 동작되는 듯 하다.
출처 : http://space5084.blog.me/60135449764
[출처] [Android] shortcut(바로가기)기능 |작성자 택이
'Program > Android Java' 카테고리의 다른 글
gcm 다른 패키지에 쓰기 (0) | 2012.12.12 |
---|---|
gps 켜고 끄기 (0) | 2012.11.28 |
항상 최상위에 나오는 뷰 만들기. (0) | 2012.11.21 |
[Android] 전역 변수(Global Variables) 사용하기 (0) | 2012.11.20 |
Android Application 상속받은 클래스 예제 (0) | 2012.11.20 |