<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Calvin's Tech Space

    成于堅忍,毀于浮躁

       :: 首頁 :: 聯系 :: 聚合  :: 管理
    PackageManager.setComponentEnabledSetting 可以用來禁用某個組件,包括activity,receiver等等。被禁用的組件會被持久化到/data/system/packages.xml中,如:

    <package name="com.android.setupwizard" codePath="/system/app/SetupWizard.apk" nativeLibraryPath="/data/data/com.android.setupwizard/lib" flags="1" ft="13349457a90" it="13349457a90" ut="13349457a90" version="130" userId="10016">
    <sigs count="1">
    <cert index="0" />
    </sigs>
    <disabled-components>
    <item name="com.android.setupwizard.SetupWizardActivity" />
    </disabled-components>
    </package>

    現在需要在運行時禁用某個widget,同時有一個system property用來標識是否需要禁用。
    因為widget實際上就是個reveiver,它接收android.appwidget.action.APPWIDGET_UPDATE的action,所以開始的思路是:
    創建一個BroadcastReceiver,接收Intent.ACTION_BOOT_COMPLETED這個動作,從而在啟動完成后調用SystemProperties.get("disable_widget"),如果需要禁用這個widget,那么調用:
    PackageManager.setComponentEnabledSetting(widgetComponentName,PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
    ??????????????? PackageManager.DONT_KILL_APP);

    但是問題是,調用這個方法disable掉這個widget后,發現必須把設備重啟之后才能生效...
    經過google,發現問題出在com.android.server.AppWidgetService.java。
    原來開機后,SystemServer會調用AppWidgetService的systemReady()方法,這個方法通過PackageManager查詢所有的widget receiver組件,保存到mInstalledProviders變量列表中,并持久化widget信息到/data/system/appwidgets.xml中。
    而在Launcher上長按添加widget時的那個widget列表信息也是通過AppWidgetService取得mInstalledProviders列表。
    問題在于我們通過PackageManager.setComponentEnabledSetting()禁用掉某個widget后,packagemanager確實將這個組件disable了,但是AppWidgetService卻沒有去從packagemanager reload widget信息,這就導致了mInstalledProviders中保存的widget信息還是開機時load進來的那些信息,并沒有與pm進行同步。直到下一次開機調用systemReady重新加載widget信息才會刷新這個列表。

    參考:
    Dynamically enabling or disabling a widget with PackageManager.setComponentEnabledSetting does not work
    http://code.google.com/p/android/issues/detail?id=6533

    http://blog.csdn.net/yinlijun2004/article/details/6136108

    posted on 2011-12-27 14:14 calvin 閱讀(1686) 評論(0)  編輯  收藏 所屬分類: Android
    主站蜘蛛池模板: 台湾一级毛片永久免费| 国产精品免费AV片在线观看| 亚洲网站在线观看| 亚洲最大黄色网站| 特级毛片A级毛片免费播放| 性感美女视频在线观看免费精品 | 午夜老司机永久免费看片| 最近最新的免费中文字幕| 亚洲AV无码成H人在线观看 | 亚洲视频在线观看不卡| 99视频在线精品免费| 国产一区二区三区在线观看免费| 久久被窝电影亚洲爽爽爽| 久久精品成人免费网站| 色婷婷六月亚洲婷婷丁香| 色爽黄1000部免费软件下载| 日韩在线播放全免费| 亚洲中文字幕一区精品自拍| 国产成人3p视频免费观看| a级毛片免费网站| 久久精品国产亚洲av瑜伽| 亚洲啪啪免费视频| 中文字幕无码亚洲欧洲日韩| 久久精品国产免费| 亚洲精品午夜久久久伊人| 日本道免费精品一区二区| 国产一精品一aⅴ一免费| 美女无遮挡拍拍拍免费视频| 在线免费观看亚洲| 看全色黄大色大片免费久久| 好湿好大好紧好爽免费视频| 亚洲AV日韩AV高潮无码专区| 欧洲精品成人免费视频在线观看| 亚洲日韩中文字幕| 一区国严二区亚洲三区| 亚洲人成人网站18禁| 亚洲综合区小说区激情区| 亚洲AV成人无码网天堂| 久久国产亚洲精品麻豆| 香蕉高清免费永久在线视频| a毛片在线看片免费|