久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

【轉(zhuǎn)】如何設(shè)置系統(tǒng)唯一的 launcher?

 techres 2012-02-13
我想把自己寫的launcher設(shè)置成系統(tǒng)唯一的home launcher,。
在網(wǎng)上搜了資料,,都是講在android2.1版本上如何修改,, 我現(xiàn)在版本是android2.3,一些文件都不一樣了,。
在android2.3上該如何修改???

多謝指教??!

附上別人寫的2.1版本上的方法:
定義一個(gè)私有的filter選項(xiàng),,然后用這個(gè)選項(xiàng)來過濾HOME.
   一般情況下我們使用Manifest中定義的<category android:name="android.intent.category.HOME"來過濾的,,
我們現(xiàn)在增加一個(gè)私有的HOME_FIRST過濾。

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

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

3)修改和CATEGORY_HOME相關(guān)的所有的地方,,都改成HOME_FIRST,,主要是framework中的這幾個(gè)地方:

    frameworks/base/services/java/com/android/server/am/ActivityManagerService.java中
    //intent.addCategory(Intent.CATEGORY_HOME);
    改成intent.addCategory(Intent.CATEGORY_HOME_FIRST); //lixinso:
    //if (r.intent.hasCategory(Intent.CATEGORY_HOME)) {
    改成if (r.intent.hasCategory(Intent.CATEGORY_HOME_FIRST)) { //lixinso: Intent.CATEGORY_HOME -> Intent.CATEGORY_HOME_FIRST

   frameworks/base/services/java/com/android/server/am/HistoryRecorder.java中
   // _intent.hasCategory(Intent.CATEGORY_HOME) &&
   改成 _intent.hasCategory(Intent.CATEGORY_HOME_FIRST) && //lixinso: Intent.CATEGORY_HOME->Intent.CATEGORY_HOME_FIRST

   frameworks/policies/base/mid/com/android/internal/policy/impl/MidWindowManager.java中
   //mHomeIntent.addCategory(Intent.CATEGORY_HOME);
   改成 mHomeIntent.addCategory(Intent.CATEGORY_HOME_FIRST); //lixinso

  frameworks/policies/base/mid/com/android/internal/policy/impl/RecentApplicationsDialog.java中
   //new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME),0);
   改成 new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME_FIRST),0); //lixinso

  frameworks/policies/base/phone/com/android/internal/policy/impl/PhoneWindowManager.java中
   //mHomeIntent.addCategory(Intent.CATEGORY_HOME);
   改成 mHomeIntent.addCategory(Intent.CATEGORY_HOME_FIRST); //lixinso

  frameworks/policies/base/phone/com/android/internal/policy/impl/RecentApplicationsDialog.java中
   //ResolveInfo homeInfo = pm.resolveActivity(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME),0);
   改成 ResolveInfo homeInfo = pm.resolveActivity(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME_FIRST),0); //lixinso



4) 寫一個(gè)自己的Launcher.
   可以參考android sample中的Launcher,或者android源代碼中的 /packages/apps/Launcher 來寫,。
   在Launcher中標(biāo)記其是不是Launcher的最關(guān)鍵的代碼時(shí)Manifest中的filter:android:name="android.intent.category.HOME"
   現(xiàn)在我們定義了自己的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>
                                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.HOME_FIRST" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.MONKEY" />
            </intent-filter>
        </activity>
    </application>

然后將編譯好的apk放到/out/target/product/generic/system/app目錄下。

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

6)
做完這些工作,就可以重新編譯Android了,,我們可以編譯修改過的幾個(gè)相關(guān)的包,。
如果之前編譯過了Android源碼,可以用mmm命令來編譯部分的改動,。
這里需要這樣編譯:

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

7)
編譯完成后重新生成img文件,。
$ make snod

8) 現(xiàn)在可以啟動Android模擬器來看效果了。
首先設(shè)置環(huán)境變量:
$ export ANDROID_PRODUCT_OUT= ./out/target/product/generic
然后切換到
$ cd ./out/host/linux-x86/bin
運(yùn)行
$ ./emulator

這樣我們啟動的模擬器里面用的image就是我們剛才編譯好的自己定制的東西了,。
從模擬器上可以看到啟動的Launcher是我們自己的Launcher,,不會出現(xiàn)默認(rèn)的Launcher了,也不會出現(xiàn)選擇界面,。

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


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

    本站是提供個(gè)人知識管理的網(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ā)表

    請遵守用戶 評論公約

    類似文章 更多