2014-05-15 38 views
3

我正在通過PackageManager API。我覺得定義的以下常量:Android - PackageManager標誌

1) GET_DISABLED_COMPONENTS 
2) GET_DISABLED_UNTIL_USED_COMPONENTS 
3) COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED 
4) COMPONENT_ENABLED_STATE_DISABLED_USER 
5) COMPONENT_ENABLED_STATE_DISABLED 
6) COMPONENT_ENABLED_STATE_DEFAULT 
7) COMPONENT_ENABLED_STATE_ENABLED 
8) GET_UNINSTALLED_PACKAGES 

在閱讀documentation,我看到了常數5-7組件已啓用/禁用不管它是如何在清單文件中指定。

對於3,本細則說:

This application should be considered, until the point where the user actually 
wants to use it. 

這是什麼意思?

對於4,單證說:

The user has explicitly disabled the application, regardless of what it has 
specified in its manifest. 

如果這個標誌涉及到應用程序,爲什麼這個名字開始與「組件」?用戶如何禁用應用程序?

爲8,文件說:

Flag parameter to retrieve some information about all applications (even 
uninstalled ones) which have data directories. This state could have 
resulted if applications have been deleted with flag DONT_DELETE_DATA with 
a possibility of being replaced or reinstalled in future. 

如果指定了DONT_DELETE_DATA標誌?總之,如果有人可以請開發人員解釋這些常量的用例,這將會有所幫助。

謝謝。

回答

0

我在一個項目中使用它們。看看這裏。 https://github.com/slightfoot/android-launcher-badges

不知道它是否有幫助。

編輯: 你會看到這裏使用的大部分標誌:AppBadge.java其餘的都很自我解釋。 The documentation似乎很好地描述了一切。

  • COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED(在API級別18)

    它提到似乎是在說明可能的使用情況相當足夠的例子。

    僅針對setApplicationEnabledSetting(String, int, int)的標誌:應該考慮此應用程序,直到用戶真正想要使用它爲止。這意味着它通常不會顯示給用戶(例如在啓動器中),但用戶界面的各個部分可以使用GET_DISABLED_UNTIL_USED_COMPONENTS仍然可以看到它並允許用戶選擇它(例如IME,設備管理員等)。這樣的代碼,一旦用戶選擇了應用程序,在這一點上也應該啓用它。此選項目前不能與setComponentEnabledSetting(ComponentName, int, int)一起使用。

  • COMPONENT_ENABLED_STATE_DISABLED_USER(在API級別14)

    這似乎他們已設計爲最終與setComponentEnabledSetting工作,但目前他們不能。這是爲了向前兼容,並且文檔聲明您可以使用setApplicationEnabledSetting

    僅針對setApplicationEnabledSetting(String, int, int)的標誌:用戶已明確禁用應用程序,無論其清單中指定了什麼內容。因爲這是由用戶的請求引起的,所以如果需要,他們可以通過適當的系統UI重新啓用它。此選項目前不能與setComponentEnabledSetting(ComponentName, int, int)一起使用。

  • DONT_DELETE_DATA標誌更名爲DELETE_KEEP_DATA和文檔尚未更新。它已被標記爲@hide,因爲它不適合公共開發人員使用。

    /** 
    * Flag parameter for {@link #deletePackage} to indicate that you don't want to delete the 
    * package's data directory. 
    * 
    * @hide 
    */ 
    public static final int DELETE_KEEP_DATA = 0x00000001; 
    
  • +0

    能否請您詳細闡述項目中的使用情況。請使用哪個標誌,並請解釋上述標誌的模糊含義。 – Gem

    +0

    我編輯了我的答案來闡述這些觀點。 – Simon