小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Launcher預(yù)設(shè)Widget 如果想在Launcher初始化時在Workspace中顯示自定義或者網(wǎng)上下載的widget來美化我們的產(chǎn)品,我們需要獲取Widget的ComponentName信息,

 劉恩道 2012-04-23
如果想在Launcher初始化時在Workspace中顯示自定義或者網(wǎng)上下載的widget來美化我們的產(chǎn)品,我們需要獲取WidgetComponentName信息,主要是包括包名和類名。如果是別人寫的widget,在不知道包名和類名的情況下該如何辦?這就需要破解了,http:///?p=270 我是按照這個網(wǎng)址提供的方法進(jìn)行破解的。只需要生成jar包,用JD打開即可看到包名和類名。我是在桌面上添加了一個天氣預(yù)報(bào)和數(shù)字時鐘兩個widget。以下是添加天氣預(yù)報(bào)的代碼:

 

  1. private boolean addWeatherWidget(SQLiteDatabase db, ContentValues values,TypedArray a) {  
  2.               
  3.             String packageName = a.getString(R.styleable.Favorite_packageName);  
  4.             String className = a.getString(R.styleable.Favorite_className);  
  5.             if(packageName == null || className == null){  
  6.                 return false;  
  7.             }  
  8.               
  9.             final int[] bindSources = new int[] {  
  10.                     Favorites.ITEM_TYPE_WIDGET_WEATHER,  
  11.             };  
  12.   
  13.             final ArrayList<ComponentName> bindTargets = new ArrayList<ComponentName>();  
  14.             bindTargets.add(new ComponentName(packageName,  className));  
  15.   
  16.             boolean allocatedAppWidgets = false;  
  17.   
  18.             // Try binding to an analog clock widget  
  19.             try {  
  20.                 int appWidgetId = mAppWidgetHost.allocateAppWidgetId();  
  21.   
  22.                 values.put(Favorites.ITEM_TYPE, Favorites.ITEM_TYPE_WIDGET_WEATHER);  
  23.                 values.put(Favorites.SPANX,a.getString(R.styleable.Favorite_spanX));  
  24.                 values.put(Favorites.SPANY, a.getString(R.styleable.Favorite_spanY));  
  25.                 values.put(Favorites.APPWIDGET_ID, appWidgetId);  
  26.                 db.insert(TABLE_FAVORITES, null, values);  
  27.   
  28.                 allocatedAppWidgets = true;  
  29.                 Log.i(LOG_TAG, "addWeatherWidget -- allocatedAppWidgets = "+allocatedAppWidgets);  
  30.             } catch (RuntimeException ex) {  
  31.                 Log.e(LOG_TAG, "Problem allocating appWidgetId", ex);  
  32.             }  
  33.             // If any appWidgetIds allocated, then launch over to binder  
  34.             if (allocatedAppWidgets) {  
  35.                 launchAppWidgetBinder(bindSources, bindTargets);  
  36.             }  
  37.   
  38.             return allocatedAppWidgets;  
  39.         }   

    注意必須要調(diào)用launchAppWidgetBinder(bindSources, bindTargets);方法,否則啟動widget時會提示”problem loading widget”,奇怪的是如果通過上面的方法添加數(shù)字時鐘,數(shù)據(jù)庫中數(shù)據(jù)添加成功,但桌面什么也沒有!至今還沒明白,解決方案是使用LauncherProvider 中現(xiàn)有的方法:addAppWidget(db,values,a)添加。

    以上都是代碼的添加方式,loadFavorites是加載了/package/apps/VLauncher/res/xml文件夾下的default_workspace.xml文件,所以在default_workspace.xml文件中還需要配置相關(guān)的widget信息。我的配置如下:

  1. <weather  
  2.             launcher:packageName="com.anddoes.fancywidget.pro"         
  3.             launcher:className="com.anddoes.fancywidget.pro.FancyWeather"         
  4.             launcher:container="-100"          
  5.         launcher:screen="0"          
  6.             launcher:x="0"               
  7.             launcher:y="0"               
  8.             launcher:spanX="2"           
  9.             launcher:spanY="1"/>   

其中packageName ClassName都是破解才知道的。配置詳細(xì)說明如下:

  1. <widget  
  2. launcher:packageName="..."       //widget的packageName  
  3. launcher:className=" ..."       //實(shí)現(xiàn) widget的 receiver 類的名稱.  
  4.     launcher:container="..."        //放置的位置(只能為desktop)  
  5.         launcher:screen="..."        //放置在第幾屏上  
  6.         launcher:x="..."              //放置的x位置  
  7.         launcher:y="..."              //放置的y位置  
  8.         launcher:spanx="..."         //在x方向上所占格數(shù)  
  9.         launcher:spany="..."/>       //在y方向上所占格數(shù)  

代碼完成了,編譯安裝即可看到效果。

安裝時請注意:

    (1)通過adb push方式安裝。如:adb push launcher_v1.3.3.apk /system/app ,若通過adb install launcher_v1.3.3.apk 安裝會提示沒有綁定widget的權(quán)限,安裝過程會出現(xiàn)錯誤,并且提示“problem loading widget

    (2)安裝前必須將Launcher.db數(shù)據(jù)庫刪除!以上就是在launcher添加widget的具體步驟了。寫得不是很清晰,請指教,也祝您成功!

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多