基于Android Q的SettingsIntelligence源码
- 使用命令adb logcat|grep "cmp",点击Settings下的搜索框,我们得到如下输出:
04-17 13:38:13.690 1030 1451 I ActivityTaskManager: START u0 {act=android.settings.APP_SEARCH_SETTINGS pkg=com.android.settings.intelligence cmp=com.android.settings.intelligence/.search.SearchActivity (has extras)} from uid 1000
清单文件下关于SearchActivity的声明如下:
<activity
android:name=".search.SearchActivity"
android:exported="true"
android:theme="@style/Theme.Settings.NoActionBar">
<intent-filter priority="-1">
<action android:name="com.android.settings.action.SETTINGS_SEARCH" />
<action android:name="android.settings.APP_SEARCH_SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
- SearchActivity会初始化搜索框,在初始化方法onCreate()中,实例化了一个SearchFragMent.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search_main);
// Keeps layouts in-place when keyboard opens.
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
FragmentManager fragmentManager = getFragmentManager();
Fragment fragment = fragmentManager.findFragmentById(R.id.main_content);
if (fragment == null) {
fragmentManager.beginTra