当前位置: 代码迷 >> Android >> Settings源码 PreferenceScreen 跳转Activity有关问题
  详细解决方案

Settings源码 PreferenceScreen 跳转Activity有关问题

热度:144   发布时间:2016-05-01 22:24:23.0
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
  相关解决方案