2017-12-12 24 views
0

Google 앱 화면의 두 가지 바로 가기를 사용하도록 설정했습니다. 매니페스트를 사용하여 아래의 바로 가기를 참조하는 Activity를 초기화했습니다.바로 가기와 실행 프로그램 위젯 (Android)

<activity 
    android:name=".ui.shortcuts.ShortCut1" 
    android:screenOrientation="portrait" 
    android:icon="@drawable/shortcut1" 
    android:label="@string/app_shortcut_name1" 
    android:theme="@style/AppLightTheme"> 
     <intent-filter> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <action android:name="android.intent.action.CREATE_SHORTCUT" /> 
     </intent-filter> 

</activity> 

코드에서 나는 다음과 같이 단축키를 활성화했습니다.

Intent shortcutIntent = null; 
shortcutIntent = new Intent(ApplicationNekt.getContext(), ShortCut1.class); 

shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
Intent intent = new Intent(); 
intent.putExtra("duplicate", false); 
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); 



intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, ApplicationNekt.getContext().getString(R.string.app_shortcut_name1)); 
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext(ApplicationNekt.getContext(), R.drawable.shortcut1)); 

intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); 
ApplicationNekt.getContext().sendBroadcast(intent); 

지금 노바와 액션 발사기, 그들은 내가 매니페스트에 준 아이콘과 텍스트로 바로 가기 섹션 아래에있는 바로 가기를 표시합니다. 클릭하고 누르고 있으면 홈 탭에 아이콘을 배치 할 수 있습니다. 그 직후에 타겟 활동이 열립니다. 그러나 전화 홈 화면으로 돌아 가면 이전 단계에서 만든 바로 가기 아이콘이 제거됩니다.

여기에 뭔가가 있습니까?

답변

0

Nova Launcher의 Kevin이 이메일을 받았다.

그것 또한 내 경우에는 다른 스레드 Android define shortcut that can be used in custom launcher

설명, 내가 노바/액션 런처의 위젯 화면에서 바로 가기를 추가하고자하는 사용자를 지원하기 위해 원하는 모두 바로 가기뿐만 아니라 코드를 추가합니다. 그래서 나는 다음과 같이했다.

아래 코드는 ShortCut1.java 클래스 파일에 썼습니다. 이것은 활동 코드입니다.

public class ShortCut1 extends Activity{ 

@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // This code runs when the user actually clicks and 
    // opens the shortcut. so redirect him to target screen. 
    openTargetTab(0); 


    // This code is useful when called by the Nova/Action launcher's 
    // widget is clicked. So return them with icon, name and target 
    // activity. Once they receive it they will set the short cut icon on home. 
    // Note: Even when the shortcut is clicked, this result is set, 
    // but nobody reads the response. So it should be ok. 
    Intent resIntent = getResIntent(); 
    setResult(RESULT_OK, resIntent); 

    finish(); 
} 

private Intent getResIntent() { 

    Intent shortcutIntent = new Intent(); 
    // Target intent is set to this own class. So that when the user clicks on the shortcut this intent will be passed. 
    Intent target = new Intent(this, ShortCut1.class); 
    shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, target); 
    shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, 
     Application.getContext().getString(R.string.shortcut_name)); 
    shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, 
     Intent.ShortcutIconResource.fromContext(Application.getContext(), 
               R.drawable.shortcut1)); 
    return shortcutIntent; 
} 

private void openHomeTab(int tabIndex) { 

    // Final target screen. 
    Intent intent = new Intent(this, TargetActivity.class); 
    startActivity(intent); 
} 
} 

참고 : 매니페스트 나 바로 가기 추가 코드에서 코드를 제거하거나 변경하지 않았습니다. 내 응용 프로그램에서도이 지원이 필요하므로 그대로 코드를 남겼습니다. 따라서 사용자가 "바로 가기 추가"를 클릭하면 해당 코드가 실행됩니다. 내가 여기서 한 변경 사항은 제 3 자 실행기가 이해할 수있는 적절한 의도로 "Setresult"를 호출 한 것입니다.