- XML code
<PreferenceScreen android:title="@string/sync_settings" android:summary="@string/sync_settings_summary" android:key="sync_settings"> <intent android:action="android.settings.SYNC_SETTINGS" /></PreferenceScreen>
在这段代码中载入了一个Intent 动作为android.sttings.SYNC_SETTINGS
根据此动作在AndroidManifest.xml 是无法找到的 请问要如何找到呢?
检索包里面的类会发现有一个类 与SecuritySettings.java 类对应
于是我在AndroidManifest.xml 中找到该类的配置:
- XML code
<activity android:name="SecuritySettings" android:label="@string/security_settings_title" android:configChanges="orientation|keyboardHidden" android:clearTaskOnLaunch="true" > <intent-filter><action android:name="android.intent.action.MAIN" /><action android:name="android.settings.SECURITY_SETTINGS" /><action android:name="android.settings.LOCATION_SOURCE_SETTINGS" /><action android:name="android.security.ADD_CREDENTIAL" /><action android:name="android.security.UNLOCK_CREDENTIAL_STORAGE" /> <category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.VOICE_LAUNCH" /><category android:name="com.android.settings.SHORTCUT" /> </intent-filter></activity>
可见 没有一个动作为android.settings.SYNC_SETTINGS 的设置
当我把动作改变时 然后重新编译成apk 这个Settings.apk 还是可以跑的 请问这是怎么回事
- XML code
<PreferenceScreen android:title="@string/sync_settings" android:summary="@string/sync_settings_summary" android:key="sync_settings"> <!-- 已改变android.settings.SYNC_SETTINGS 为 android.settings.SECURITY_SETTINGS --> <intent android:action="android.settings.SECURITY_SETTINGS " /></PreferenceScreen>
我想问的问题是 它这么写得原理是什么(即我们怎么找到对应的Activity)?
------解决方案--------------------
<intent android:action="android.settings.SYNC_SETTINGS" />
这个只代表这个PreferenceScreen会发出一个系统的action,并不代表要在Settings应用中去接受这个action,查了一下源码,应该在app/provider/googlesubscribedfeedsprovider中会去处理这个action.有兴趣去看看这个目录下的AndroidManifast.xml