Android4.1:如何把一个应用添加到Settings列表中...


1.在资源文件:packages/apps/Settings/res/xml/settings_headers.xml 中添加对应的应用列表

[Code]

    <?xml version="1.0" encoding="utf-8"?>   

   <preference-headers
          xmlns:android="http://schemas.android.com/apk/res/android">

    :

     <!-- Language -->
     <header
         android:id="@+id/language_settings"
         android:fragment="com.android.settings.inputmethod.InputMethodAndLanguageSettings"
         android:icon="@drawable/ic_settings_language"
         android:title="@string/language_settings" />

     <!-- MyApp -->
     <header
         android:key="my_app"
         android:id="@+id/myapp_settings"
         android:icon="@drawable/ic_settings_myapp"
         android:title="@string/myapp_settings_title" >
         <intent
             android:action="android.intent.action.MAIN"
             android:targetPackage="com.test.my.app"
             android:targetClass="com.test.my.app.MyAppActivity"/>
     </header>

   :

   </preference-headers>

其中涉及到的icon ,title(string)添加对应的res/drawable-hdpi , res/values/Strings.xml 


2.在Code为添加的列表注册事件:packages/apps/Settings/src/com/android/settings/Settings.java 

[Code]

     :

      private static final String MYAPP_PACKAGE = "com.test.my.app";
      private static final String MYAPP_CLASS_NAME = "com.test.my.app.MyAppActivity";  

      :

    private void updateHeaderList(List<Header> target) {

         int i = 0;
         while (i < target.size()) {
             Header header = target.get(i);
             // Ids are integers, so downcasting
             int id = (int) header.id;
             if (id == R.id.dock_settings) {
                 :
             } else if (id == R.id.myapp_settings){                                                                                        
                 // If we don't have an MyApp APK, remove that option
                 Intent myappIntent = new Intent();
                 myappIntent.setClassName(MYAPP_PACKAGE, MYAPP_CLASS_NAME);
                 myappIntent.setAction(Intent.ACTION_MAIN);
                 PackageManager pm = getPackageManager();
                 List<ResolveInfo> myappApks = pm.queryIntentActivities(myappIntent, 0);
                 if(myappApks == null || myappApks.isEmpty()) {
                     target.remove(header);
                 }
             } 

            :

    }


3.修改完之后: make Settings

     source build/envsetup.sh

     lunch [选择 XXX ]

     mmm package/apps/Settings 

     adb push out/target/product/XXX/system/app/Settings.apk system/app


...Test....Debug...T....D....T...

[End]


-Hope can help you-


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值