android – 通过preferences.xml中的Intent打开应用程序设置

我想通过单击首选项条目来打开应用程序设置.所以我向preferences.xml添加了一个intent

    <PreferenceScreen
        android:key="DELETE_DATA"
        android:title="@string/pref_delete_data">
        <intent android:action="android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS"/>
    </PreferenceScreen>

我已经在AndroidManifest.xml中添加了一个Intent-filter

    <activity
        android:name=".SettingsActivity"
        android:label="@string/title_activity_settings"
        android:parentActivityName=".MainActivity">
        <intent-filter>
            <action android:name="android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS"/>
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
...

使用上面的代码,没有任何操作或错误.但我不知道为什么……
如果我要删除< category>出现错误,因此意图被触发.有任何想法吗?

设备:搭载Android 4.4.4的HTC One M8

解决方法:

对于其他对OP如何使用OnPreferenceClickListener,check out this answer from a similar question感兴趣的人.但是直接从intent启动一个活动,这对我有用:

<?xml version="1.0" encoding="utf-8"?>

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
  <PreferenceCategory
    android:title="@string/pref_title_category_name">
  <PreferenceScreen
    android:title="@string/pref_title_activity_name"
    android:key="pref_launch_settings">
  <intent
    android:action="android.intent.action.VIEW"
    android:data="<data>"
    android:targetPackage="<package name>"
    android:targetClass="<target class>" />
  </PreferenceScreen>
</PreferenceCategory>

data =完整包名称加活动名称.即,com.example.myapp.ActivityName

package name =清单文件根目录中定义的包名称.即,com.example.myapp

targetClass =再次完整包路径,即com.example.myapp.ActivityName

请注意,我正在使用< intent>在PreferenceScreen中使用这种方式标记,而不是PreferenceCategory.

希望有所帮助!

上一篇:Python中$HOME中用户首选项的最佳实践


下一篇:sublime text3 - 打造成小程序开发神器