现在 Android 平台中很多应用在安装后,首次进入应用时,会有一个该应用的功能宣传或者提示的界面。
如下图是 360Camera 的一个首次应用提示界面:
通常会有好几幅画面,用来介绍该应用的一些特色。这里只截取一屏……
那么类似的这种功能是如何实现的呢?
一般都会设置一个 Preferece 配置项。譬如
public static final String KEY_FIRST_USE_NOTE = "pref_first_use_note_key";
并且将其默认值设置为 TRUE
当用户首次进入该应用时,就会判断该值,若该值为 false, 则不会显示该画面。
否则,就显示该画面。显示完该画面后或者说用户操作完该画面后顺利进入到应用时,将该 preference 值写为 false
private void showFirstUseNote(){ Log.v(TAG,"showFirstUseNote ..."); if (mPreferences.getBoolean(Settings.KEY_FIRST_USE_NOTE, true)){ //do show the note work here } }
private void writeFirstUseNoteValue() { // Clear the preference. Log.v(TAG,"writeFirstUseNoteValue KEY_FIRST_USE_NOTE false"); Editor editor = mPreferences.edit(); editor.putBoolean(Settings.KEY_FIRST_USE_NOTE, false); editor.apply(); }
大部分第一次使用时提示的功能都是这样处理的。
如果第一次使用时没留意看那些提示,事后又想再看一下也是有办法的。
当然先要获取 root 权限。
adb remount success 后,进入到 /data/data/vStudio.Android.Camera360/shared_prefs 目录下,
执行 ls 命令即可看到 该应用有关的配置文件
root@android:/data/data/vStudio.Android.Camera360/shared_prefs # ls ls GPhoto_PREF_3x0.xml helper.xml mobclick_agent_header_vStudio.Android.Camera360.xml mobclick_agent_state_vStudio.Android.Camera360.xml moto_bug.xml pref_camera_3.0_beta2.xml renren_sdk_config_2_.xml scene_current_temp.xml vStudio.Android.Camera360_preferences.xml
执行 cat * 命令即可看到该应用所有的配置项,如果有兴趣,你可以根据设置字段名字去猜测该设置的意思
root@android:/data/data/vStudio.Android.Camera360/shared_prefs # cat * cat * <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <boolean name="mSetting_IsSafeQuit" value="false" /> <int name="mSetting_TilfShiftDirect" value="0" /> <string name="mLastSavePath">/storage/sdcard0/DCIM/Camera/</string> <int name="mSetting_TilfShiftPosBL" value="50" /> <boolean name="mSetting_chk_use_stability" value="false" /> <string name="SceneTemplateParam"></string> <int name="mSetting_TilfShiftSizeBL" value="10" /> <string name="SceneTemplateFile"></string> <int name="mSetting_EffectIndex" value="1" /> <int name="mSetting_CapDelayTimeIndex" value="0" /> </map> <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <boolean name="first_use_3x0_155" value="false" /> </map> <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <string name="header">{"os":"Android","package":"vStudio.Android.Camera360","cpu":"ARMv7 Processor rev 0 (v7l)","ap pkey":"4c528da01d41c85ecf000211","sdk_version":"3.3","app_version":"3.0.3","lng":0,"device_id":"8654 07010000009","resolution":"800*480","access":"Wi-Fi","country":"CN","os_version":"4.1.2"," version_code":155,"idmd5":"6f86a11b1dda5f5bca7e11ec452","device_model":"vivo Y11","timezone":8,"sdk_type":"And roid","carrier":"","language":"zh","channel":"鍐呯疆BBKPD1216T","lat":0}</string> </map> <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <long name="traffics_down" value="4837" /> <string name="session_id">c330d7b5bd6920df0918bf413a2b4b26</string> <long name="duration" value="0" /> <long name="end_millis" value="-1" /> <long name="start_millis" value="1367149680521" /> <string name="appkey">4c528da01d41c85ecf000211</string> <long name="traffics_up" value="3143" /> <string name="activities"></string> </map> <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <boolean name="isSqlBug" value="true" /> <boolean name="isStart" value="true" /> </map> <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <int name="curr_indexbutton_vibrate" value="0" /> <int name="curr_indexsave_org_photo" value="1" /> <int name="curr_indexpic_size" value="2" /> <int name="curr_indexwhtie_balance" value="0" /> <int name="curr_indexcontranst" value="1" /> <int name="curr_indexsound" value="1" /> <int name="curr_indexsave_path" value="0" /> <int name="curr_indexbrightness" value="1" /> <int name="curr_indexexposure" value="3" /> <int name="curr_indexsharpness" value="-1" /> <int name="curr_indexfocus_mode" value="0" /> <int name="curr_indexsaturtion" value="-1" /> <int name="curr_indexflash" value="0" /> <int name="curr_indexshoot_mode" value="0" /> <int name="curr_indexgps" value="1" /> <int name="curr_indexcomposition" value="0" /> <int name="curr_indexzoom" value="0" /> <int name="curr_indextouch_taking" value="0" /> <int name="curr_indexpreview_size" value="0" /> <int name="curr_indexiso" value="0" /> <int name="curr_indexframing" value="0" /> <int name="curr_indexpic_quality" value="2" /> </map> <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map /> <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <int name="current_camera_mode" value="0" /> </map> <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <string name="auto_checker_time">2013-4-28 涓嬪崍7:17:26</string> <string name="list_tiltshiftpicsize">1</string> <boolean name="check_gps" value="true" /> <boolean name="chk_resizetomin" value="false" /> <string name="list_photosize">2</string> <string name="list_savepath">0</string> <boolean name="has_bind_auto_update" value="true" /> <string name="list_screen_brightness">1</string> <string name="list_photo_quality">2</string> <boolean name="pref_save_org_photo" value="true" /> <long name="last_start_millis" value="20130428" /> </map>
执行 rm * 命令即可清除所有的配置项。
root@android:/data/data/vStudio.Android.Camera360/shared_prefs # rm * rm * root@android:/data/data/vStudio.Android.Camera360/shared_prefs # exit exit
再从手机端进应用,就会出现你想要看到的提示了。不神奇吧。
如果具体要看某一个配置文件,可以通过 adb shell pull /data/data/vStudio.Android.Camera360/shared_prefs/vStudio.Android.Camera360_preferences.xml C:\
这时C盘根目录下就有了该文件,以任何文件编辑器打开均可。
你甚至可以直接更改某个设置值,再将该文件 push 到相应目录中去,看看有什么变化发生。
通过此种方式可以调试某个值是否有写错。