AppShortcuts에서 Navigation Drawer가 있는 Activity를 시작할 때 설치하는 방법
10813 단어 AndroidStaticShortcutsAppShortcuts
KyudoScoreBook Navigation Drawer를 구글 플레이스타처럼 사용한다.
Navigation Drawer에서 마이그레이션할 수 있는 기본 기능 화면에는 Navigation Drawer의 메뉴가 선택된 상태에서 표시되기 때문에 화면별로 Fragment로 전환하는 설치가 적용된다.
AppShortcuts에서 이루고 싶은 거.
AppShortcuts에서는 Navigation Drawer의 메뉴에 표시되는 기록, 메모 일람, 그래프, 점괘 등 4개 메뉴가 구현된다.
앞에서 말한 바와 같이 기록된 단축키에서 시작하는 경우 Navigation Drawer의 기록을 선택하여 상태로 시작하기를 원합니다.
또 화면별로 동일한 액티비티를 적용해 여러 개의 Fragment 설치를 전환하고, 앱 Shortcuts에서 시작할 때 동일한 액티비티를 시작해야 한다.
App ShortCuts의 설명과 googlesamples/android-AppShortcuts 중 단축키의 샘플 코드가 하나밖에 없어서 난처합니다.
Static Shortcuts int에 Extra 넣기
AppShortcuts에서 같은 Activity를 시작해서 다른 Fragment를 표시하려면 intent에 Extra 시작을 채워야 하기 때문이다.
이때 아래와 같이
<intent>
라벨<extra>
으로 라벨을 감는다.
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
<shortcut
android:enabled="true"
android:icon="@drawable/ic_short_record"
android:shortcutId="shortcut_record"
android:shortcutLongLabel="@string/shortcut_record"
android:shortcutShortLabel="@string/shortcut_record">
<intent
android:action="android.intent.action.VIEW"
android:targetClass="com.bowyer.app.appshortcuts.ui.activity.MainActivity"
android:targetPackage="com.bowyer.app.appshortcuts">
<extra
android:name="shortcut_id"
android:value="RecordTabFragment"/>
</intent>
<categories android:name="android.shortcut.conversation"/>
</shortcut>
<shortcut
android:enabled="true"
android:icon="@drawable/ic_short_memo"
android:shortcutId="shortcut_memos"
android:shortcutLongLabel="@string/shortcut_memo_list"
android:shortcutShortLabel="@string/shortcut_memo_list">
<intent
android:action="android.intent.action.VIEW"
android:targetClass="com.bowyer.app.appshortcuts.ui.activity.MainActivity"
android:targetPackage="com.bowyer.app.appshortcuts">
<extra
android:name="shortcut_id"
android:value="MemoListFragment"/>
</intent>
<categories android:name="android.shortcut.conversation"/>
</shortcut>
</shortcuts>
처리가 시작된 AppShortcuts
AppShortcuts에서 시작되는MainActivity는 intent에서
shortcut_id
Extra를 가져옵니다.나의 경우, 보통 시작에도 MainActivity를 사용하기 때문에
shortcut_id
존재하는지 검사하고 있습니다.
private static final String KEY_SHORTCUT_ID = "shortcut_id";
・・・
private void handleShortcutsAction() {
boolean hasExtra = getIntent().hasExtra(KEY_SHORTCUT_ID);
if (!hasExtra) {
return;
}
String shortcutId = getIntent().getStringExtra(KEY_SHORTCUT_ID);
・・・
그리고 이것shortcutId
에 대응하는 처리를 기록합니다.
String shortcutId = getIntent().getStringExtra(KEY_SHORTCUT_ID);
// 取得したshortcutIdからどのFragmentを起動するか決める
Page page = Page.forMenuId(shortcutId);
switch (page.getMenuId()) {
case R.id.nav_record:
pageChange(RecordTabFragment.newInstance());
break;
case R.id.nav_memo:
pageChange(MemoListFragment.newInstance());
break;
case R.id.nav_chart:
pageChange(ChartFragment.newInstance());
break;
case R.id.nav_notification:
pageChange(NotificationFragment.newInstance());
break;
case R.id.nav_fortune:
pageChange(FortuneFragment.newInstance());
break;
}
// Navigation Drawerを選択状態にする
navigationView.setCheckedItem(page.getMenuId());
구글 플레이스토어처럼 Navigation Drawer에서 여러 개의 Fragment에서 사용하는 앱을 전환하고 앱 Shortcuts를 설치할 때는 참고하십시오.AppShortcuts의 샘플 코드
이번에 발표된 프로그램의 일부 코드를 공개했다.KyudoScoreAppShortcuts
이 샘플 코드를 제공한 후 바로 Static Shortcuts의 intent에 Extra를 채우는 방법을 몰라서 Dynamic Shortcuts로 여러 개의 Intent를 만들지 못했다.
Dynamic Shortcuts에서 Static Shortcuts로 다시 설치하는 PR도 있으니 가능하면 참고하세요.
Use static shortcuts with bundle extras
최후
AppShortcuts 정보는 아직 적고 자주 넘어진다.
내가 공개한 AppShortcuts샘플 코드도 일부 실현되지 않았다.
AppShortcuts의샘플 코드를 보셨다면 이렇게 더 좋은 점이 있으면 홍보해 주세요.
Reference
이 문제에 관하여(AppShortcuts에서 Navigation Drawer가 있는 Activity를 시작할 때 설치하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/bowyer-app/items/dc7bb4ad39b2cea5f9c7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)