android Shorcut을 만드는 방법에 관련하여 포스팅하려고한다.
Shortcut 이란 쉽게 말해 내가 만들 어플리케이션 안의 여러개의 activity 중 하나의 activity로 바로가기 아이콘을 하나더 생성한다고 생각하면 된다.
ShortcutManager
isRequestPinShortcutSupported() 함수
-> false 일경우, shortcut을 지원하지 않음
-> true 일경우, shortcut을 지원
필자의 경우 다이얼로그를 사용하여 요청하도록 만들었다.
//오레오버전이상일경우
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
ShortcutManager mShortcutManager = act.getSystemService(ShortcutManager.class);
ShortcutInfo pinShortcutInfo = new ShortcutInfo.Builder(act, "1")
.setShortLabel("쿠팡")
.setLongLabel("쿠팡")
.setIcon(Icon.createWithResource(act, R.drawable.coupang))
.setIntent(new Intent(act, LayoutWebView.class).setAction(Intent.ACTION_MAIN))
//.setIntent(new Intent(Intent.ACTION_VIEW, Uri.parse("https://coupa.ng/bHnD72")))
.build();
Bitmap bitmap = null;
if (bitmap == null) {
// pinShortcutInfo
Drawable drawable = ResourcesCompat.getDrawable(getResources(), R.drawable.icon512, null);
bitmap = ((BitmapDrawable) drawable).getBitmap();
}
Log.d(HoUtils.TAG, "사이즈 : " + mShortcutManager.getPinnedShortcuts().size());
new AlertDialog.Builder(act)
.setTitle("타이틀")
.setMessage("내용")
.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent pinnedShortcutCallbackIntent = mShortcutManager.createShortcutResultIntent(pinShortcutInfo);
PendingIntent successCallback = PendingIntent.getBroadcast(act, 0,
pinnedShortcutCallbackIntent, 0);
Boolean isSuccess = mShortcutManager.requestPinShortcut(pinShortcutInfo,
successCallback.getIntentSender());
Log.d(HoUtils.TAG,"석세스풀 : "+isSuccess);
/*if (isSuccess) {
Toast.makeText(act, "'" + "1" + "' 바로가기가 바탕화면에 생성되었습니다.", Toast.LENGTH_LONG).show();
}*/
}
}).setNegativeButton("취소", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).show();
}else {
SharedPreferences appPreferences = PreferenceManager.getDefaultSharedPreferences(this);
Boolean isAppInstalled = appPreferences.getBoolean("isAppInstalled", false);
String currentLanguage = Locale.getDefault().getDisplayLanguage();
String previousSetLanguage = appPreferences.getString("phoneLanguage", Locale.getDefault().getDisplayLanguage());
Log.d(HoUtils.TAG, "결과1 : " + shortcutReinstall + " 인스톨1 : " + isAppInstalled + " 랭귀지 : " + currentLanguage + " 랭귀지2 : " + previousSetLanguage);
if (!previousSetLanguage.equals(currentLanguage)) {
Log.d(HoUtils.TAG, "결과 : " + shortcutReinstall + " 인스톨 : " + isAppInstalled);
shortcutReinstall = true;
}
if (!isAppInstalled || shortcutReinstall) {
Log.d(HoUtils.TAG, "여기3");
Intent HomeScreenShortCut = new Intent(getApplicationContext(),
LayoutWebView.class);
HomeScreenShortCut.setAction(Intent.ACTION_MAIN);
HomeScreenShortCut.putExtra("duplicate", false);
if (shortcutReinstall) {
Intent removeIntent = new Intent();
removeIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, HomeScreenShortCut);
String prevAppName = appPreferences.getString("appName", getString(R.string.app_name));
removeIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, prevAppName);
removeIntent.setAction("com.android.launcher.action.UNINSTALL_SHORTCUT");
getApplicationContext().sendBroadcast(removeIntent);
}
Intent addIntent = new Intent();
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, HomeScreenShortCut);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
Intent.ShortcutIconResource.fromContext(getApplicationContext(),
R.mipmap.ic_launcher));
addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
getApplicationContext().sendBroadcast(addIntent);
//Make preference true
SharedPreferences.Editor editor = appPreferences.edit();
editor.putBoolean("isAppInstalled", true);
editor.putString("phoneLanguage", currentLanguage);
editor.putString("appName", getString(R.string.app_name));
editor.commit();
}
}
※파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음※
'IT개발일지 > Android' 카테고리의 다른 글
[Android] 지정한 도메인 이름 'kakaolink'이(가) 올바르지 않습니다. 올바른 도메인 이름을 지정하세요. (0) | 2020.09.16 |
---|---|
Android Webview 크기 조절 (컨텐츠가 벗어날경우) (0) | 2020.08.05 |
Android Launchuer Icon Badge 사용하기 최신포스팅!! (0) | 2020.07.31 |
[Android]Unable to instantiate receiver com.google.firebase.iid.FirebaseInstanceIdReceiver: (0) | 2020.07.14 |
[Android] 안드로이드 releas용 hashkey (2) | 2020.07.09 |