▶ LauncherShortcuts

실행화면
 
단순 실행 화면

홈 스크린에서 길게 누르기- Shortcuts 선택               Shortcuts메뉴에 ApiDemos 선택                           

바탕화면에 "Sample"라는 단축 아이콘 생성                홈스크린의 "Sample"를 눌렀을때

소스 위치 : src/com/example/android/apis/app/LauncherShortcuts.java

홈 스크린에서 바로가기를 추가하여 사용하는 예를 보여준다.

▦ LauncherShortcuts
바로가기가 수행되는 life cycle을 실제로 두 단계로  조절한다.

1. 응용 프로그램을 실행하기 위하여 바로가기를 제공한다. 사용자가 바로가기를 설치할때, 응용프로그램 내에서 activity가 실제 바로가기를 생성하고 실행을 위하여 반환한다, 사용자에게 아이콘으로 보일것이다.

2. 설치되어 있는 바로가기를 사용자가 클릭하는 시점에, intent를 보낸다. 일반적으로 응용프로그램 내의 activity에 의해 반드시 조절되길 원한다.

우리는 단순히 정보(android.content.Intent의 형태로 바로가기를 생성하는데 사용되어 질 것이다)를 다시 보내 1단계를 처리한다 

상호작용하는 방법으로 수행 할수 있다. activity는 실제로 UI에 사용자에 의해 선택된 바로가기의 연락처, 그림, URL, 미디어 종류 또는 동작등의 속성을 전달해준다. 

우리는 (바로가기 응답)이 예제에서 단순하게 들어오는 android.content.Intent의 내용을 표시하여 2단계를 처리한다.
실제 응용 프로그램에서는, 아마도 바로가기가 특정 콘텐츠를 표시하거나 특정 작업을 시작할때 사용할 것이다.


만약 Intent가 shortcut 생성이 요구되면, 종료할 것이다
        final Intent intent = getIntent();
        final String action = intent.getAction();

        if (Intent.ACTION_CREATE_SHORTCUT.equals(action)) {
            setupShortcut();
            finish();
            return;
        }

setupShortcut 함수는 shortcut(바로가기)를 생성하고 호출자에게 반환한다. 이것들은 실제적으로 두개의 Intent들에 다시 보낼것이다. 
첫번째 인텐트는 shortcut(바로가기)에 대한 컨테이너를 취급하고 setResult()에 의해 실행되어 반환된다. 이 Intent는 반드시 3가지 필드를 포함하여야 한다.

■ EXTRA_SHORTCUT_INTENT : 인텐트 바로가기
■ EXTRA_SHORTCUT_NAME : 바로가기를 표시할 텍스트
■ EXTRA_SHORTCUT_ICON(바로가기 아이콘, 비트맵이 제공된 경우) / EXTRA_SHORTCUT_ICON_RESOURCE(drawable 리소스 제공된 경우)

간단한 drawable 리소스를 사용한다면, 반드시 아래 보여지는것처럼 'android.content.Intent.ShortcutIconResource'를 사용한다. 이런 요구사항에 의해 실행된 어플리케이션들이(.apk 파일) 저장된 리소스에 접근 할수 있어야 한다. 만약 섬네일 같은 비트맵을 반환하면, EXTRA_SHORT_ICON에서 사용할 수 있다.

shortcut intent는 사용자가 shortcut을 클릭하였을때 보내는 것을 원하는 어떤 인텐트 이다. 일반적으로 content에 대하여 적당한 Uri를 ACTION_VIEW 할것이다. 그러나 어떤 Intent는 Activity에서 원하는 동작을 원하는 만큼 할 수 있을것이다.
    private void setupShortcut() {
        // 먼저 shortcut(바로가기) Intent를 설정한다. 예를들면, activity를 직접 원래대로 돌아오도록 간단하게 Intent를 만들수 있다
        // 더 전형적인 구현은 Data Uri 작업 순서에 따라 더 구체적인 결과를 출력하거나 사용자 정의 작업 순서에 따라 특정 작업을 실행한다.
        Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
        shortcutIntent.setClassName(this, this.getClass().getName());
        shortcutIntent.putExtra(EXTRA_KEY, "ApiDemos Provided This Shortcut");

        // 그리고나서, 컨테이너 Intent를 설정한다 (호출자에게 응답할)
        Intent intent = new Intent();
        intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
        intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.shortcut_name));
        Parcelable iconResource = Intent.ShortcutIconResource.fromContext(
                this,  R.drawable.app_sample_code);
        intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource);

        // 실행한 곳에 결과를 리턴한다.
        setResult(RESULT_OK, intent);
    }

우리가 CREATE_SHORTCUT intent를 수행하지 않으면, 간단하게 정보를 보여주게 된다.
AlertDialogSamples Class와 매치되는 XML은 launcher_shortcuts.xml (LauncherShortcuts.java)
        setContentView(R.layout.launcher_shortcuts);

실행된 인텐트의 뷰 아래를 나타낸다
Intent 문자열과 Intent의 EXTRA_KEY로 저장된 문자열을 가져와서 TextView에 출력
        TextView intentInfo = (TextView) findViewById(R.id.txt_shortcut_intent);
        String info = intent.toString();
        String extra = intent.getStringExtra(EXTRA_KEY);
        if (extra != null) {
            info = info + " " + extra;
        }
        intentInfo.setText(info);

신고

'Android > ApiDemos' 카테고리의 다른 글

App - Notification - IncomingMessage  (0) 2010.04.30
App - Menu - Inflate from XML  (0) 2010.04.20
App - LauncherShortcuts  (0) 2010.04.20
App - Intents  (0) 2010.04.20
App - Dialog  (0) 2010.04.20
App - Alarm - Alarm Service  (0) 2010.04.19
Posted by 까칠코더.


티스토리 툴바