노블의 개발이야기

[Android] Android O - App Shortcuts 본문

Android

[Android] Android O - App Shortcuts

더플러스 2017. 8. 8. 11:59

런처에 바로가기 아이콘을 생성하기 위해서 com.android.launcher.action.INSTALL_SHORTCUT 브로드 캐스트를 사용합니다.

그러나 Android O에서는 com.android.launcher.action.INSTALL_SHORTCUT 브로드캐스트는 암시적 브로드캐스트이므로 더 이상 앱에 아무런 영향을 주지 못합니다.

대신, ShortcutManager 클래스에서 requestPinShortcut() 메서드를 사용하여 앱 단축키를 만들어야 합니다.

Pinning shortcuts (고정 단축키)

app-shortcuts-pinned-shortcuts.png


앱 단축키와 유사한 Pinning shortcuts를 사용하면 앱의 특정 기능을 빠르게 시작할 수 있습니다. 고정 단축키는 별도의 아이콘으로 런처에 표시됩니다.

Note: 지원되는 런처로 단축키를 고정하려고 시도하면 단축키를 고정할 수 있는 권한을 묻는 대화상자가 나타납니다. 만약, 허용하지 않으면 실행을 취소합니다.

단축키 고정하기

1. isRequestPinShortcutSupported() 메서드를 사용하여 디바이스의 런처에서 바로가기 고정 기능을 지원하는지 확인합니다.

2. shortcut가 이미 존재하는지 여부에 따라 두가지 방법 중 하나로 ShortcutInfo 객체를 만듭니다.

3. 만약 shortcut가 이미 존재하는 경우, shortcut ID만 포함된 ShortcutInfo 개체를 만듭니다. 시스템은 자동으로 shortcut와 관련된 다른 모든 정보를 찾아서 고정합니다.

  • 새로운 shortcut를 고정하려면, ID, intent, short labal 이 포함된 ShortcutInfo 객체를 만듭니다.

  • requestPinShortcut() 메서드를 호출하여 디바이스의 런처에 shortcut 고정합니다.

4. shortcut가 고정된 이후 updateShortcuts() 메서드를 사용하여 내용을 업데이트 할 수 있습니다.

ShortcutManager mShortcutManager =
        context.getSystemService(ShortcutManager.class);

if (mShortcutManager.isRequestPinShortcutSupported()) {
    // Assumes there's already a shortcut with the ID "my-shortcut".
    // The shortcut must be enabled.
    ShortcutInfo pinShortcutInfo =
            new ShortcutInfo.Builder(context, "my-shortcut").build();

    // Create the PendingIntent object only if your app needs to be notified
    // that the user allowed the shortcut to be pinned. Note that, if the
    // pinning operation fails, your app isn't notified. We assume here that the
    // app has implemented a method called createShortcutResultIntent() that
    // returns a broadcast intent.
    Intent pinnedShortcutCallbackIntent =
            mShortcutManager.createShortcutResultIntent(pinShortcutInfo);

    // Configure the intent so that your app's broadcast receiver gets
    // the callback successfully.
    PendingIntent successCallback = PendingIntent.getBroadcast(context, 0,
            pinnedShortcutCallbackIntent, 0);

    mShortcutManager.requestPinShortcut(pinShortcutInfo,
            successCallback.getIntentSender());
}


'Android' 카테고리의 다른 글

[Android] Android O - Privacy  (0) 2017.08.09
[Android] Android O - Alert windows  (0) 2017.08.08
[Android] Android O - Background Location Limits  (0) 2017.08.08
[Android] Service  (0) 2017.08.01
[Android] UriMatcher  (0) 2017.07.24
Comments