투케이2K

216. (AndroidStudio/android/java) 애플리케이션 바로 가기 메뉴 만들기 실시 - app shortcuts 본문

Android

216. (AndroidStudio/android/java) 애플리케이션 바로 가기 메뉴 만들기 실시 - app shortcuts

투케이2K 2021. 11. 6. 19:17

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : java


[소스 코드]

		// [안드로이드 오레오 이상 버전인 경우 >> AppShortcuts 바로가기 메뉴 추가 [5개 까지 가능]]
		/**
		 * [AppShortcuts 설명]
		 * staitc AppShortcuts : AndroidManifest.xml 파일에 메타 태그 등록 및 xml 파일로 추가
		 * dynamic AppShortcuts : 코드로 동적으로 추가 실시 아이콘 생성 선택
		 * pinned AppShortcuts : 코드로 동적으로 추가 실시 및 아이콘 생성됨
		 */


		/**
		 * [AppShortcuts 속성 정리]
		 * shortcutId : Shortcut의 고유한 ID (Shrotcut을 등록하거나 찾을 때 이 ID를 사용)
		 * enabled : 이 값이 true라면 Shortcut 아이콘을 눌렀을 때 어떤 기능이 동작
		 * icon : Shortcut의 아이콘
		 * shortcutShortLabel : Shortcut의 이름 (가능하면 10자 내외로 작성)
		 * shortcutLongLabel : Shortcut의 이름 (가능하면 25자 내외로 작성)
		 * shortcutDisabledMessage : 비활성화된 Shortcut을 실행시킬 때 이 메시지를 표시
		 * intent: Shortcut 아이콘을 눌렀을 때 실행되는 인텐트 (내 앱의 Activity를 실행시킬 수 있고, 또는 다른 앱 실행 가능)
		 */
		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
			try {
				// [ShortcutManager 객체 생성 실시]
				Context context = getApplicationContext();
				ShortcutManager shortcutManager = context.getSystemService(ShortcutManager.class);


				// [바로 가기 메뉴 추가 실시 : 구글 웹사이트 이동]
				String googleWebsiteShortcutId = "googleWebsiteShortcutId";
				ShortcutInfo googleWebsiteShortcut = new ShortcutInfo.Builder(context, googleWebsiteShortcutId)
						.setShortLabel("Google Website")
						.setLongLabel("Open Google Website")
						.setDisabledMessage("Google Website is disabled")
						.setIcon(Icon.createWithResource(context, R.drawable.tk_app_icon))
						.setIntent(
								new Intent(Intent.ACTION_VIEW)
										.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
										.setData(Uri.parse("https://www.google.com"))
						)
						.build();


				// [바로 가기 메뉴 추가 실시 : 애플리케이션 설정]
				String appShortcutId = "appShortcutId";
				ShortcutInfo appShortcut = new ShortcutInfo.Builder(context, appShortcutId)
						.setShortLabel("App Settings")
						.setLongLabel("Open App Settings")
						.setDisabledMessage("App Settings is disabled")
						.setIcon(Icon.createWithResource(context, R.drawable.tk_app_icon))
						.setIntent(
								new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
										.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
										.setData(Uri.fromParts("package", context.getPackageName(), null))
						)
						.build();


				// [바로 가기 메뉴 추가 실시 : 액티비티 이동]
				String activityShortcutId = "activityShortcutId";
				ShortcutInfo activityShortcut = new ShortcutInfo.Builder(context, activityShortcutId)
						.setShortLabel("Activity Settings")
						.setLongLabel("Open Activity Settings")
						.setDisabledMessage("Activity Settings is disabled")
						.setIcon(Icon.createWithResource(context, R.drawable.tk_app_icon))
						.setIntent(
								new Intent(Intent.ACTION_VIEW)
										.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
										.setClassName(getPackageName(),
												String.valueOf(getPackageName())+".A_SettingGo") // A_SettingGo 액티비티 이동
										.putExtra("A_SettingGo", "hello") // 데이터 전송
						)
						.build();


				// [바로가기 메뉴 추가 수행 실시]
				shortcutManager.setDynamicShortcuts(Arrays.asList(googleWebsiteShortcut, appShortcut, activityShortcut)); //[생성]
				Log.d("---","---");
				Log.w("//===========//","================================================");
				Log.d("","\n"+"[A_Loading > onCreate() 메소드 : AppShortcuts 바로 가기 메뉴 추가 실시]");
				Log.w("//===========//","================================================");
				Log.d("---","---");


				// [바로가기 메뉴 삭제 수행 실시]
				//shortcutManager.removeAllDynamicShortcuts(); // [전체 값 삭제]
				//shortcutManager.removeDynamicShortcuts(Arrays.asList(appShortcutId)); // [특정 값 삭제]
			}
			catch (Exception e){
				e.printStackTrace();
			}
		}

 


[결과 출력]


 

반응형
Comments