<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
    主站蜘蛛池模板: 国产免费人成在线视频| 日韩免费高清视频网站| 亚洲欧洲精品成人久久曰影片| 国产精品亚洲四区在线观看| 国产精彩免费视频| 亚洲熟妇无码爱v在线观看| 91香蕉国产线在线观看免费 | 亚洲欧洲专线一区| 9久9久女女免费精品视频在线观看| 亚洲国产高清美女在线观看| 亚洲毛片免费观看| 亚洲无mate20pro麻豆| 免费看香港一级毛片| 人成电影网在线观看免费| 免费人成视频在线观看不卡| 国产精品亚洲一区二区无码 | a视频免费在线观看| 亚洲AV无码专区亚洲AV伊甸园| 黄色片免费在线观看| 精品日韩亚洲AV无码一区二区三区 | 花蝴蝶免费视频在线观看高清版| 亚洲精品你懂的在线观看| 久久这里只精品国产免费10| 亚洲精品国产福利片| 日韩毛片免费无码无毒视频观看| 亚洲日韩精品A∨片无码加勒比| 亚洲&#228;v永久无码精品天堂久久 | 久久亚洲AV无码精品色午夜麻| 久久久久高潮毛片免费全部播放| 亚洲伊人色一综合网| 国产免费观看黄AV片| 一个人看的hd免费视频| 亚洲AV无码一区二区二三区入口| 国产91免费视频| 国产亚洲男人的天堂在线观看| 国产精品亚洲综合专区片高清久久久| 成人免费乱码大片A毛片| 亚洲成人福利在线观看| 国产yw855.c免费视频| 久久久久久影院久久久久免费精品国产小说| 97久久精品亚洲中文字幕无码 |