安卓定製軟體桌面(launch)上預置特定程式的widget
最近做一個專案,需要做一個類似安卓launch的定製桌面,其中,需要在軟體啟動後把天氣預報的widget預置到介面裡,網上很多資料都是關於安卓平板的底層編譯方法,就是直接修改安卓系統的底層設定,然後重新編譯,系統桌面上就會出現widget,和我要的軟體桌面設定不同。還有類似的程式程式碼,是在桌面上放置一個按鈕,通過按鈕事件響應,產生選擇widget的intent,啟動活動後,跳出可選的widget列表,選擇後,widget就可以顯示了,需要改造成不需要選的,直接放置到桌面上面。思路比較簡單:
1、先事先找出自己想要的widget的class名(可以實現log列印下看看);
2、軟體啟動後,通過widget管理器,獲得所有的可用widget;
3、遍歷,如果是自己想要的widget的,就把它顯示出來。widget顯示需要有一個id號,這個id號,在widget選擇的介面中,通過一個放置額外整型引數來自動繫結widget,因為不需要再用選擇widget的介面,就需要顯式的繫結一下了,一開始沒注意這一點,沒繫結,所以無法顯式出來。
程式執行:構造intent,利用intent啟動活動startActivityForResult,活動執行完後會自動呼叫onActivityResult;
關鍵程式碼段如下:
mAppWidgetManager = AppWidgetManager.getInstance(this);
List<AppWidgetProviderInfo> providers = mAppWidgetManager.getInstalledProviders();
final int providerCount = providers.size();
int temp=0;
for (int i = 0; i < providerCount; i++)
{
ComponentName provider = providers.get(i).provider;
Log.i("xxx",">>>>> package name : "+ provider.getPackageName()+">>>>>> class name : "+ provider.getClassName()) ;
//對比希望的privierinfor資訊,如果是想要的,就拿出來,放置到介面上; if("com.icoolme.android.weather.widget.WeatherRigoWidget4x2Provider".equalsIgnoreCase(provider.getClassName())){
temp++;
Log.i("ok", "oik");
appWidgetProviderInfo = providers.get(i) ;
newAppWidgetId = mAppWidgetHost.allocateAppWidgetId() ;
//將id與widget繫結到一起;
Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_BIND);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, newAppWidgetId);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_PROVIDER, provider);
// TODO: we need to make sure that this accounts for the options bundle.
// intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_OPTIONS, options);
startActivityForResult(intent, MY_REQUEST_APPWIDGET);
}
}
Log.i("ok", String.valueOf(temp));
==========================================
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
Log.i("ok", "get here");
Log.i("ok", String.valueOf(resultCode));
//AppWidgetProviderInfo appWidgetProviderInfo2 = appWidgetManager.getAppWidgetInfo(newAppWidgetId) ;
AppWidgetHostView hostView = mAppWidgetHost.createView(MainActivity.this, newAppWidgetId, appWidgetProviderInfo);
int widget_minWidht = appWidgetProviderInfo.minWidth ;
int widget_minHeight = appWidgetProviderInfo.minHeight ;
//設定長寬 appWidgetProviderInfo 物件的 minWidth 和 minHeight 屬性
LinearLayout.LayoutParams linearLayoutParams = new LinearLayout.LayoutParams(widget_minWidht, widget_minHeight);
//新增至LinearLayout父檢視中
linearLayout.addView(hostView,linearLayoutParams) ;
}
相關文章
- Python學習,給自己的程式碼做個合集,定製自己的桌面軟體!Python
- 安卓裝置資料恢復軟體安卓資料恢復
- 把你的程式放到桌面——Android桌面部件WidgetAndroid
- 預約小程式APP定製APP
- python創意小作品程式碼-Python學習,給自己的程式碼做個合集,定製自己的桌面軟體!...Python
- 軟體定製開發的需求分析
- 【安卓筆記】Widget安卓筆記
- win10設定預設軟體的方法_win10預設軟體怎麼設定Win10
- 定製.NET 6.0的Middleware中介軟體
- 量身定製的Android開發軟體Android
- Novell列出的Linux上最需要的桌面軟體(轉)Linux
- 如何定製分表中介軟體
- CRM軟體定製要多少錢?
- Mac上設定圖片或視訊的預設開啟軟體的方法Mac
- 預約上門系統軟體小程式app如何搭建APP
- 網路軟體與桌面軟體的融合
- VNC共享桌面軟體,VNC共享桌面軟體下載!VNC
- 軟體定製開發與SaaS的區別
- 軟體定製開發有哪些流程
- 安卓全機型解除安裝預裝軟體免Root安卓
- 安卓開發之 App Widget安卓APP
- DSSA特定領域軟體體系結構
- Linux 中如何設定每個特定的時間執行特定的程式Linux
- 走過路過不要錯過,app定製-商城-軟體-各類小程式均可定製開發APP
- 桌面整理軟體分享!
- IOS 特定於裝置的開發:Info.plist屬性列表的設定iOS
- 直播軟體開發,Android實現根據程式名殺死特定程式Android
- 我用到的KDE桌面軟體(轉)
- 桌面軟體/exe程式軟體自動化大寶劍--lackey之初識
- 設定windows 7的Aero Peek的桌面預覽功能Windows
- iOS桌面小外掛 Widget ExtensioniOS
- 遠端桌面軟體概述
- 高階複製-3、主體定義站點上的操作
- 硬體裝置上能執行小程式嗎?
- 檢查特定埠上正在執行的程式名(轉)
- VNC共享桌面軟體下載,VNC共享桌面軟體下載安裝教程!VNC
- 最好用的遠端桌面軟體,最好用的遠端桌面軟體是什麼?該如何使用?
- win10 軟體預設開啟方式怎麼設定 win10設定預設軟體開啟方式方法Win10