读书人

Settings源码 PreferenceScreen 跳转A

发布时间: 2012-01-31 21:28:41 作者: rapoo

Settings源码 PreferenceScreen 跳转Activity问题

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

读书人网 >Android

热点推荐