2014-03-12 23 views
3

특정 홈 화면 바로 가기 이 있는지 여부를 확인하는 방법이 있습니까? 또는 홈 화면 바로 가기를 설치하고 제거 할 때 나타나는 토스트 메시지를 중지하는 방법이 있습니까?홈 화면 바로 가기가 있는지 여부를 확인하는 방법은 무엇입니까?

내 응용 프로그램은 특정 조건에서 장치 시작 시간의 홈 화면에 바로 가기를 설치하고 중복되는 바로 가기가 나타나기를 원하지 않습니다. 토치 메시지가 장치가 부팅 될 때마다 "바로 가기가 생성되었습니다"또는 "바로 가기가 이미 있습니다"라는 메시지가 나타나지 않도록하고 싶습니다. Toast 메시지를 중지 할 수있는 솔루션이 있습니까?

감사합니다.

+1

재부팅 할 때마다 앱이 왜 바로 가기를 설치/해제해야합니까? 그것은 나에게 꽤 이상한 행동으로 보입니다. 당신은 조금 더 당신의 유스 케이스를 설명 할 수 있겠습니까? – Bram

답변

12

기기 재부팅시 설치해서는 안됩니다. 다음 코드를 사용하십시오.

public void createOrUpdateShortcut() { 

    appPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
    isAppInstalled = appPreferences.getBoolean("isAppInstalled", false); 

    String currentLanguage = Locale.getDefault().getDisplayLanguage(); 
    String previousSetLanguage = appPreferences.getString("phoneLanguage", Locale.getDefault().getDisplayLanguage()); 

    if (!previousSetLanguage.equals(currentLanguage)) { 
     shortcutReinstall = true; 
    } 

    if(!isAppInstalled || shortcutReinstall){ 

     Intent HomeScreenShortCut= new Intent(getApplicationContext(), 
       BrowserLauncherActivity.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.drawable.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(); 
    } 

} 

사용자가 새 언어로 이름을 반영하도록 언어를 변경할 때이를 업데이트합니다.

+0

수실 : 고맙습니다. – Aashish

+0

도와 드리겠습니다 :). 당신도 대답을 upvote 수 있습니다 :) – Sushil