當前位置:首頁 » 安卓系統 » androidlauncher開發

androidlauncher開發

發布時間: 2022-04-11 06:16:23

1. Android Launcher 如何去掉主菜單,所有應用擺在桌面,類似小米桌面

那個桌面就是那樣的改不了,你可以下載一個桌面替代他,比如GO桌面,小米桌面我沒試過能否下載,你也可以搜索下。應該也是可以的。系統設置裡面可以設置默認使用哪個桌面。

。。。。。。暈原來你是搞開發的呀,你可以把所有圖標都放到workspace上,把應用列表屏蔽了,workspace的數據來源於LauncherModler類,裡面會讀一個資料庫得到一個列表,然後再數據綁定把這個列表啪啪啪顯示到workspace上,你可以去修改那個讀資料庫的方法,想辦法把所有應用都加到那個列表上去。

2. android launcher 怎麼做 有詳細的教程嗎

Launcher工程很大的 這個怎麼給你說啊 你去下載Launcher源碼看看 結合網路上高手給出的解析,反正看著很惱火

3. 《Android Launcher應用開發》怎麼樣

暫時還是不行,目前java已經說了可以使用delphi和vs進行android應用程序開發, 提供了dalvik虛擬機,但是並沒有放出相關插件,可能有第三方工具實現,但是估計不好。 現在最多使用的還是eclipse進行android應用層的開發。 對操作系統沒有具體要求,windows, linux和OSX都有sdk 官方建議linux 希望可以幫助到你。

4. 如何第一次寫Android Launcher Switcher就上手

有玩 Android 系統手機的人應該都有使用過 Android Launcher 之類的應用程式,它是用於變換桌面環境或操作的應用程式,或可以說是變更使用者經驗 (UX) 的程式。在命名上我個人是比較偏好稱作 Home App,因為它是按下 Home 鍵切換或執行的程式,而且它也是跑在 home screen 的桌面程式;而 Launcher 的狹定義是來自 Android 官方預設的 Home app,即 Launcher.apk。我自己下載 Android source Froyo,裡面預設是 Launcher2.apk (com.android.launcher2),位於 {SourceDir}/packages/apps 下。

Activity 可以在 AndroidManifest.xml 中注冊啟動器,啟動器也就是 launcher,它不代表是 Launcher.apk 或任何一種 Home App,而是指應用程式進入口會顯示在 Home App (或 Launcher)上。而 Home App 一般來說都沒有注冊啟動器,因此有人就寫了偵測系統中所有 Home App 的程式,也就是 Home App Switcher。比較好的 Swicher 還會提供清除和設定 default Home App。我在 HTC Incredible S 中安裝了數種 Home App,即 Launcher7、ADW、Zeam、Regina、LauncherPro、Home Sample、Home++,當然預設的 HTC Sense 也有。其中只有 Zeam 是有注冊 launcher 分類,所以在應用程式選單上就能找得到。

Intent and Intent Filters

在 Android 系統中,Intent 是極為重要,也是最基本要知道的東西。對於系統而言,Intent 就像是應用程式的描述,也類似標簽的概念。根據 Intent 內容,系統或應用程式能夠去使用與搜尋其他應用程式與其提供的服務。Intent 資訊是注冊在程式的 AndroidManifest.xml,並包含在 Intent Filters 標簽的內容中。當搜尋系統中的應用程式時,會去比對應用程式的 Intent Filters,而搜尋條件是包裝在 Intent 物件中以找到符合某種條件程式。Intent Filters 的內容就像是應用程式的索引,內容比對成功就會回傳相對應的 ResolveInfo。有關 Intent 的詳細內容可以參考底下提供的官方網頁連結 [1]。

一個 Activity 基本上要在 AndroidManifest.xml 的 intent-filter 中注冊一個 action 和 category; action預設是 intent.ACTION_MAIN,而 category 預設是 intent.CATEGORY_LAUNCHER。根據官方網站說明,ACTION_MAIN 指該 Activity 是個可開始啟動的進入點;CATEGORY_LAUNCHER 指該 Activity 在 Home App 上有啟動器,也就是在應用程式選單上會出現該 Activity 的 icon,以方便執行。注冊內容如下:

<activity android:name=".HomeSelector" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

一個應用程式中,可以有多個 Activity 都注冊 CATEGORY_LAUNCHER,那在安裝完後就會有多個 icon 出現在程式選單上,分別能執行各個 Activity。如果 Activity 沒有注冊 CATEGORY_LAUNCHER,那至少要注冊 CATEGORY_DEFAULT,因為它是系統使用 Intent 搜尋的預設條件之一。注冊 CATEGORY_DEFAULT 後該 Activity 不會有 icon 在應用程式選單上出現,所以一般都是給非 ACTION_MAIN 的 Activity 注冊,如 intent.ACTION_VIEW 之類的。如果 Activity 只注冊 action,一般預設 Intent 的搜尋可能會失效,那就需要使用顯形式啟動,以上面的例子來看,就是指定啟動 HomeSelector,例子如下:

view sourceprint?
1 Intent i = new Intent(this, HomeSelector.class);

2 startActivity(i);
如果是指定啟動外部程式,那可以按照下面的做法:

view sourceprint?
1 Intent myIntent = new Intent();

2 myIntent.setClassName("com.KaDaNet", "com.KaDaNet.KaDaNet_MainController");

3 startActivity(myIntent);
那隱含式搜尋呢?如果你有 Android SDK 有研究,那你應該看過 SDK 中的 sample code,其中的 API Demo 展示了許多使用 API 功能的 Activity,而 API Demo 是由階層式列表對這些 Activity 分類。這個階層式列表的內容是動態生成出來的,由 loadLabel 和 activityInfo.name 去分類。因為是動態生成,所以就不會把列表寫死,那所有列表上要顯示的 Activity 資訊,就是利用隱含式搜尋獲得,程式碼如下:

view sourceprint?
1 Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);

2 mainIntent.addCategory(Intent.CATEGORY_SAMPLE_CODE);

3 PackageManager pm = getPackageManager();

4 List<resolveinfo> list = pm.queryIntentActivities(mainIntent, 0);
API Demo 只顯示 category 注冊為 CATEGORY_SAMPLE_CODE 的 Activity 的資訊。把條件塞進 Intent 後利用 queryIntentActivities 搜尋,其中的一個 Activity 注冊內容如下:

<activity android:name=".app.CustomDialogActivity"
android:label="@string/activity_custom_dialog"
android:theme="@style/Theme.CustomDialog">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.SAMPLE_CODE" />
</intent-filter>
</activity>

Home App and Intent Filters

在 Android 中,Home App 需要告訴系統自己是一個 Home App,那它才會以 Home 的方式去執行,也就是跑在 home screen 上。同樣的,Home App 透過在 AndroidManifest.xml 上注冊 category 為 intent.CATEGORY_HOME 就可以了。以 SDK sample 中的 Home 為例,其注冊內容如下:

<activity android:name="Home" android:theme="@style/Theme"
android:launchMode="singleInstance"
android:stateNotNeeded="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

搜尋 Home App 的做法與 API Demo 相同,使用 PackageManager 中的 queryIntentActivities 即可。在下面範例中,對搜尋到的結果取出我們想要的資訊包裝成 HomeInfo,並回傳 List。

view sourceprint?
01 private List<homeinfo> queryHomeApp() {

02 Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);

03 mainIntent.addCategory(Intent.CATEGORY_HOME);

04 PackageManager pm = getPackageManager();

05 List<resolveinfo> rList = pm.queryIntentActivities(mainIntent, 0);

06 List<homeinfo> homeList = new ArrayList<homeinfo>();

07

08 for(ResolveInfo r : rList) {

09 homeList.add(new HomeInfo(r, pm));

10 }

11 return homeList;

12 }


這里使用 HomeInfo 類別包裝四種資訊,即類別名稱、封包名稱、Activity 標簽和 Activity icon。

view sourceprint?
01 public class HomeInfo {

02 public String name;

03 public String packageName;

04 public String label;

05 public Drawable icon;

06

07 public HomeInfo(ResolveInfo rInfo, PackageManager pm) {

08 name = rInfo.activityInfo.name;

09 packageName = rInfo.activityInfo.packageName;

10 label = rInfo.loadLabel(pm).toString();

11 icon = rInfo.loadIcon(pm);

12 }

13 }
很簡單吧!這樣就能取得系統中所有的 Home App 資訊,接下來根據這些資訊來切換 Home App。切換的方式,先前也提到過了,那就是顯形式啟動!

view sourceprint?
1 public void switchHome(String packageName) {

2 Intent homeIntent = new Intent("android.intent.action.MAIN");

3 homeIntent.addCategory("android.intent.category.HOME");

4 homeIntent.addCategory("android.intent.category.DEFAULT");

5 homeIntent.setPackage(packageName);

6 this.startActivity(homeIntent);

7 this.finish();

8 }
在程式界面上顯示所有已安裝的 Home App 資訊,最簡單的方式是利用 ListView,再新建一個 list adapter 進行配接並設定 list item 按下後要處理的事,以上面的程式碼來看就是我們要處理的事,即切換到另一個 Home App。

5. Android 自定義Launcher開發,添加自己開發的Widget,不能進行更新,該Widget在系統launcher可更新

你的意思是自己開發的Widget添加到自定義的Launcher不能進行更新,而添加到系統Launcher可以進行更新?
如果是這樣,考慮是不是許可權問題?
可否貼下更新的的代碼,方便定位問題。

6. android 怎樣調用launcher

如果你要定製一個Android系統,你想用你自己的Launcher(Home)作主界面來替換Android自帶的Home,而且不希望用戶安裝的Launcher來替換掉你的Launcher,應該如何來實現呢?
我們可以通過修改Framework層來實現這樣的功能。

1) 首先了解一下Android的啟動過程。
Android系統的啟動先從Zygote開始啟動,然後......(中間的過程就不說了).....一直到了SystemServer(framework)這個地方,看到這段代碼:

/**
* This method is called from Zygote to initialize the system. This willcause the native
* services (SurfaceFlinger, AudioFlinger, etc..) to be started. Afterthat it will call back
* up into init2() to start the Android services.
*/
native public static void init1(String[] args);

public static void main(String[] args) {
if (SamplingProfilerIntegration.isEnabled()) {
SamplingProfilerIntegration.start();
timer = new Timer();
timer.schele(new TimerTask() {
@Override
public void run() {
SamplingProfilerIntegration.writeSnapshot("system_server");
}
}, SNAPSHOT_INTERVAL, SNAPSHOT_INTERVAL);
}

// The system server has to run all of the time, so it needs to be
// as efficient as possible with its memory usage.
VMRuntime.getRuntime().setTargetHeapUtilization(0.8f);

System.loadLibrary("android_servers");
init1(args);
}

public static final void init2() {
Log.i(TAG, "Entered the Android system server!");
Thread thr = new ServerThread();
thr.setName("android.server.ServerThread");
thr.start();
}
}

從SystemServer的main函數開始啟動各種服務:
首先啟動init1,然後啟動init2.從上面的注釋可以看到:init1這個方法時被Zygote調用來初始化系統的,init1會啟動native的服務如SurfaceFlinger,AudioFlinger等等,這些工作做完以後會回調init2來啟動Android的service。

這里我們主要來關注init2的過程。init2中啟動ServerThread線程,ServerThread中啟動了一系列的服務,比如這些:

ActivityManagerService
EntropyService
PowerManagerService
TelephonyRegistry
PackageManagerService
AccountManagerService
BatteryService
HardwareService
Watchdog
SensorService
BluetoothService
StatusBarService
ClipboardService
InputMethodManagerService
NetStatService
ConnectivityService
AccessibilityManagerService
NotificationManagerService
MountService
DeviceStorageMonitorService
LocationManagerService
SearchManagerService
FallbackCheckinService
WallpaperManagerService
AudioService
BackupManagerService
AppWidgetService

這些大大小小的服務起來以後,開始
((ActivityManagerService)ActivityManagerNative.getDefault()).systemReady()
在systemReady後開始開始啟動Launcher。在尋找Launcher的時候是根據HOME的filter(在Manifest中定義的<categoryandroid:name="android.intent.category.HOME" />)來過濾。
然後根據filter出來的HOME來啟動,如果只有一個HOME,則啟動這個HOME,如果用戶自己裝了HOME,那就會彈出來一個列表供用戶選擇。

我們現在希望從這里彈出我們自己定製的Launcher,同時也不希望彈出選擇HOME的界面,我們不希望用戶修改我們的home,比如我們的home上放了好多廣告,以及強制安裝的程序,不希望用戶把它幹掉。

我們可以通過這樣來實現:

2) 定義一個私有的filter選項,然後用這個選項來過濾HOME.
一般情況下我們使用Manifest中定義的<categoryandroid:name="android.intent.category.HOME"來過濾的,我們現在增加一個私有的HOME_FIRST過濾。

在Intent.java(frameworks/base/core/java/android/content/Intent.java)中添加兩行代碼

//lixinso:添加CATEGORY_FS_HOME
@SdkConstant(SdkConstantType.INTENT_CATEGORY)
public static final String CATEGORY_FS_HOME= "android.intent.category.FS_HOME";

3)修改和CATEGORY_HOME相關的所有的地方,都改成CATEGORY_FS_HOME,主要是framework中的這幾個地方:使用grep命令查找要修改的地方:

grep CATEGORY_HOME -l * -R

將上述文件中和CATEGORY_HOME相關的所有的地方,都改成CATEGORY_FS_HOME。
4) 寫一個自己的Launcher.
可以參考android sample中的Launcher,或者android源代碼中的 /packages/apps/Launcher 來寫。
在Launcher中標記其是不是Launcher的最關鍵的代碼時Manifest中的filter:android:name="android.intent.category.HOME"
現在我們定義了自己的filter,那麼,我們在我們自己寫的Launcher中將Manifest改為:
<application android:process="android.process.acore3"android:icon="@drawable/icon"android:label="@string/app_name">
<activity android:name=".FirstAppActivity"
android:label="@string/app_name">
<intent-filter>
<actionandroid:name="android.intent.action.MAIN" />
<categoryandroid:name="android.intent.category. FS_HOME" />
<categoryandroid:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.MONKEY"/>
</intent-filter>
</activity>
</application>

然後將編譯好的apk放到方式fs100_root/system/app目錄下。

5)將Android自帶的Launcher刪除掉
包括源代碼(packages/apps/Launcher)和apk(/out/target/proct/generic/system/app/Launcher.apk)。

6) 重新編譯Android
做完這些工作,就可以重新編譯Android了,我們可以編譯修改過的幾個相關的包,可以用mmm命令來編譯部分的改動。這里需要這樣編譯:

$ source build/envsetup.sh
$ lunch
$ mmm frameworks/base
$ mmm frameworks/base/services/java
$ mmm frameworks/policies/base/mid
$ mmm frameworks/policies/base/phone

重新啟動開發板,從開發板上就可以看到啟動的Launcher是我們自己的Launcher,不會出現默認的Launcher了,也不會出現選擇界面。

9)我們再驗證一下,如果用戶裝上了一個其他的Launcher(Home)會怎麼樣。
從網上找一個一般的Launcher或者自己寫一個一般的Launcher裝上去,重新啟動,不會出現選擇界面。
按HOME鍵也不會出來兩個HOME來選擇。

這樣我們就牢牢控制了用戶的桌面。
只有我們自己定製的HOME才能裝上。這對於定製Android設備的廠商很有用處。

7. android可以自己開發一個launcher,並且替換掉系統的嗎

可以,但是不建議這么做,開發的laucher的和系統的其他app兼容性需要考慮。

開發一個laucher:在你的app的androidmanifest.xml中定義<category android:name="android.intent.category.LAUNCHER" />
刪除系統的laucher:需要獲得root許可權,建議保留,因為充滿很多危險。
默認:開發的launcher設置默認就好了。
安卓系統中的桌面啟動器,安卓系統的桌面UI統稱為Launcher

8. android可以自己開發一個launcher,並且替換掉系統的嗎

可以的。
現在基於安卓的修改版系統,都是自己開發launcher 的。
特別表現在網路電視機頂盒這一塊,尤為突出。

9. 安卓開發,圖標背景顏色怎麼更換

android launcher開發之圖標背景顏色替換:

  1. 桌面第一次載入時是默認讀取一個xml配置文件,完成配置工作。這個配置文件在Launcher目錄下,路徑是:Launcher esxmldefault_workspace.xml 。

  2. XML文件就是剛升級,Launcher第一次顯示的時候,會讀取的配置文件。default_workspace。xml裡面可以配置APP快捷方式、Widget、Search搜索欄等。

  3. launcher裡面負責解析default_workspace.xml文件的方法是 LauncherProvider.java裡面的loadFavorites方法。

其實就是一個分析XML和寫入資料庫的過程,LauncherProvider.java是整個Launcher的數據來源,知道這些圖標如何載入出來之後對做屏幕是壞 修改背景大小 行列等都有好處。

10. android開發者:修改android圖標ic_launcher,為自定義的.

android圖標ic_launcher的修改方式:

  1. 將自定義的圖片復制到 res/drawable目錄下,例如 logo.png.

  2. 打開AndroidManifest.xml文件.

  3. 在application節點中修改android:icon為android:icon="@drawable/logo"即可.

注意,部分Android手機的桌面有緩存,改了icon以後,桌面應用圖標並沒有變,需要重啟手機才會生效.

熱點內容
javachrome插件 發布:2025-04-06 05:56:49 瀏覽:294
centos登錄ftp伺服器 發布:2025-04-06 05:55:59 瀏覽:387
路由器上傳速度 發布:2025-04-06 05:54:35 瀏覽:940
安卓z7手錶為什麼打不了電話 發布:2025-04-06 05:49:50 瀏覽:197
java中的修飾符 發布:2025-04-06 05:40:54 瀏覽:945
openglandroid 發布:2025-04-06 05:40:09 瀏覽:749
安卓手機用什麼軟體可以剪切音頻 發布:2025-04-06 05:34:37 瀏覽:75
WEB動態密碼在哪裡看 發布:2025-04-06 05:34:20 瀏覽:144
用於筆記本電腦的外存儲器是 發布:2025-04-06 05:21:30 瀏覽:489
1tb硬碟搭建緩存伺服器 發布:2025-04-06 05:10:30 瀏覽:955