Android12.0 源码中添加系统String字符串

  • Post author:
  • Post category:其他


在源码中,需要引用自定义的字符串,如:在frameworks目录中,为了引用自定义字符串资源,需要自定义字符串提前添加到系统中,否则无法引用,

需求:在源码ActivityTaskManagerService.java中,应用启动时,弹出提示窗口.

为了资源使用的灵活性,需要对提示框口中的提示语定义到资源文件中,之后就可以在ActivityTaskManagerService.java直接引用.

(1)系统中的资源,需要在symbols.xml中定义.

frameworks/base/core/res/res/values/symbols.xml
<resources>  
 ......
<!-- For app language picker -->
  <java-symbol type="string" name="system_locale_title" />
  <java-symbol type="layout" name="app_language_picker_system_default" />
  <java-symbol type="layout" name="app_language_picker_system_current" />
  <java-symbol type="layout" name="app_language_picker_current_locale_item" />
  <java-symbol type="id" name="system_locale_subtitle" />
  <java-symbol type="id" name="language_picker_item" />
  <java-symbol type="id" name="language_picker_header" />

  <java-symbol type="dimen" name="status_bar_height_default" />
  <java-symbol type="string" name="default_card_name"/>

<!--添加新资源,add by zc -->

  <java-symbol type="string" name="dialog_title"/>
  <java-symbol type="string" name="dialog_message"/>
  <java-symbol type="string" name="dialog_button_yse"/>

<!--添加新资源,end by zc -->

</resources>

(2) 之后,需要在strings.xml中,定义具体属性值.

frameworks/base/core/res/res/values/strings.xml

提醒:一定在该配置文件中定义英文模式字符串,否则编译的时候会提示收不到资源

<resources>
......

<!--添加新资源,add by zc -->

  <string name="dialog_title">Dialog Title </string>
  <string name="dialog_message">Dialog text </string>
  <string name="dialog_button_yse">Sure</string>

<!--添加新资源,end by zc -->

</resources>
frameworks/base/core/res/res/values-zh-rCN/strings.xml
  
<resources>
......

<!--添加新资源,add by zc -->

  <string name="dialog_title">标题</string>
  <string name="dialog_message">内容</string>
  <string name="dialog_button_yse">确定</string>

<!--添加新资源,end by zc -->

</resources>

(3)在ActivityTaskManagerService.java或者系统源码的其他地方,都可以通过资源引用,使用上面定义的资源,使用方法如下:

//获取系统资源,add by zc

String title= mContext.getResources().getString(com.android.internal.R.string.dialog_title);
String message= mContext.getResources().getString(com.android.internal.R.string.dialog_message);
String buttonYes= mContext.getResources().getString(com.android.internal.R.string.dialog_button_yse);

mAlertDialog=new AlertDialog.Builder(mUiContext)
        .setTitle(title)
        .setMessage(message)
        .setCancelable(false)
        .setPositiveButton(buttonYes,New DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int id){
         if (mAlertDialog != null){
             Log.d(TAG,"点击 确定 按钮");//具体逻辑
             mAlertDialog.dismiss();
        }
    }
})
 .create();
 mAlertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
 mAlertDialog.show();

//获取系统资源,end by zc 



版权声明:本文为Smile_729day原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。