導航:首頁 > 操作系統 > androidlauncher界面

androidlauncher界面

發布時間:2023-03-01 18:52:55

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設備的廠商很有用處。

❷ Android O 默認打開設置launcher3界面所有的APP圖標LOGO形狀的選項

這個選項在開發者模式打開後,會顯示出來。

想要默認顯示出來
在alps\packages\apps\Launcher3\src\com\android\launcher3\graphics\IconShapeOverride.java
中的isSupported()方法中添加

就可以實現。

如果想要修改默認的形狀在IconShapeOverride.java中的

方法中修改。

根據config.xml中的值

可修改默認想要的形狀。

❸ android tv 模擬器默認桌面修改 Alternate Launcher開機自動啟動app

搞了個android tv盒子,想修改默認的launcher桌面,網上搜了好幾天,沒有成功。即使設置了如下默認開機launcher在android tv系統中也不會出來選擇開啟哪個launcher的選擇框,可能android tv 系統跟android 系統還不太一樣啊。

於是乎就在網上到處搜方法,還真搜到了一個在模擬器上成功替換默認桌面的方法。
我的模擬器android 版本是 api level 26 應該是android tv 8.0

呃,要進行替換首先模擬器上要有root許可權。但是因為android 7.0之後的模擬器都默認沒有root許可權了。需要這樣再命令行啟動模擬器。找到自己的模擬器目錄:

模擬器起來後,執行adb shell,提示符是$,表示沒有root許可權,然後su,提示符變成#,獲取到root許可權。

執行 pm disable-user --user 0 com.google.android.tvlauncher ,禁用google默認的android tv 桌面。執行之前一定要先安裝自己的有 android.intent.category.HOME android.intent.category.LAUNCHER android.intent.category.DEFAULT 的app 哦

之後冷重新啟動模擬器,你就會發現開機後的桌面變成了自己的app啦。
有空試試我的android tv 機頂盒,看看行不行。
關於不同android tv 版本禁用 google默認 launcher的命令如下,自己多試試,版本對應不一定對,原帖地址是: Alternate Launcher (No Root) on Marshmallow, Nougat, Oreo, Pie Info ,為了方便我把內容轉過來:

呃。。。。恢復原有桌面。。。。

❹ launcher是什麼意思

launcher的意思是安卓系統桌面啟動器。

Launcher是安卓系統中的桌面啟動器,安卓系統的桌面UI統稱為Launcher。Launcher是安卓系統中的主要程序組件之一。

安卓系統中如果沒有Launcher就無法啟動安卓桌面,Launcher出錯的時候,安卓系統會出現「進程 com.android.launcher 意外停止」的提示窗口。這時需要重新啟動Launcher。

特點:

DragLayer實際上也是一個抽象的界面,用來處理拖動和對事件進行初步處理然後按情況分發下去,角色是一個controller。它首先用onInterceptTouchEvent(MotionEvent)來攔截所有的touch事件。

如果是長按item拖動的話不把事件傳下去,直接交由onTouchEvent()處理。這樣就可以實現item的移動了,如果不是拖動item的話就把事件傳到目標view。

交有目標view的事件處理函數做相應處理。如果有要對事件的特殊需求的話可以修改onInterceptTouchEvent(MotionEvent)來實現所需要的功能。

以上內容參考網路—launcher

❺ 如何將Windows launcher 設置為Android 手機的主頁面

在安卓手機中安裝了第三方的桌面(Launcher)實現更換系統界面風格的效果,不過,當你安裝第三方Launcher並錯選「始終」以該桌面啟動,之後卻發現這個系統不好用,應該要怎麼切換回來呢?

想從第三方桌面切換回默認的系統界面有3個方法。以神舟X55手機為例,想將iOS風格的「iLauncher」切換回默認的「Launcher3」,可以從以下操作入手:

1.進入進入「系統設置->主屏幕」,在裡面勾選「Launcher3」,即可恢復默認的啟動器。

2.進入「系統設置->應用」,點擊iLauncher圖標進入應用信息界面,選擇「卸載」,之後手機也會恢復默認的啟動器。
3.進入「系統設置->應用」,點擊iLauncher圖標進入應用信息界面,選擇「清除數據」,然後按主頁鍵,此時會重新彈出啟動器選擇的窗口,再選擇默認啟動器即可。

❻ Android 怎麼把Launcher桌面的每一屏修改為x*x的布局

Android 怎麼把Launcher桌面的每一屏修改為x*x的布局
安裝scim:
apt-get install scim scim-chinese
在 /etc/Xsession.d 下建立文件 95xim
寫入下面這些,重啟
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
export LC_CTYPE="zh_CN.UTF-8"
export G_FILENAME_ENCODING=@UTF-8
export XIM="SCIM"
export XMODIFIERS="@im=SCIM"
export GTK_IM_MODULE=scim
export QT_IM_MODULE=scim
scim -d
這樣就可以在X啟動後,按ctrl+space切換到scim輸入法了。

閱讀全文

與androidlauncher界面相關的資料

熱點內容
同態加密gpu 瀏覽:216
程序員告訴你網賭為什麼贏不了 瀏覽:971
程序員最帥操作 瀏覽:72
雲伺服器可以隨時更換嗎 瀏覽:489
老款車在哪裡可以買到app 瀏覽:460
程序員事業單位 瀏覽:68
特來電需要用哪個App 瀏覽:881
電腦如何共享其他伺服器 瀏覽:260
php網站性能優化 瀏覽:354
被子收納袋壓縮真空 瀏覽:30
h1z1選什麼伺服器 瀏覽:484
蘋果版三國殺怎麼在安卓上下載 瀏覽:728
安潤國際app在哪裡下載 瀏覽:438
iospdf教程下載 瀏覽:332
加密貨幣換手率300表示什麼 瀏覽:727
手機wps新建文件夾存照片 瀏覽:399
單片機rgbled 瀏覽:963
怎麼通過文件加密後發給微信好友 瀏覽:90
用虛擬機編程 瀏覽:821
公司代理伺服器有什麼要求 瀏覽:244