在源码中,需要引用自定义的字符串,如:在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 版权协议,转载请附上原文出处链接和本声明。