如何在选择首选项时启动浏览器

时间:2010-12-11 20:12:35

标签: android preferences

我正在创建首选项菜单,并希望在单击特定首选项时启动浏览器(具有特定URL)。我知道这可以做到,但我似乎无法立即开始工作。

有什么想法吗?

由于

######解

所以在我的大脑屁消失之后,这就是我所做的:

getPreferenceManager()
   .findPreference("my_preference_key")
   .setOnPreferenceClickListener(
      new Preferences.OnPreferenceClickListener() {
    @Override
    public boolean onPreferenceClick(Preference preference) {
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setData(Uri.parse("http://some_url_here"));
        startActivity(intent);
        return true;
    }
});

3 个答案:

答案 0 :(得分:6)

getPreferenceManager()
   .findPreference("my_preference_key")
   .setOnPreferenceClickListener(
      new Preferences.OnPreferenceClickListener() {
    @Override
    public boolean onPreferenceClick(Preference preference) {
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setData(Uri.parse("http://some_url_here"));
        startActivity(intent);
        return true;
    }
});

enter code here

答案 1 :(得分:3)

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://some_url_here"));
startActivity(intent);

可以缩减为

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://some_url_here")));

答案 2 :(得分:1)

假设您已经有一个PreferenceFragmentPreferenceActivity,其中有一行加载了该屏幕:

addPreferencesFromResource(R.xml.my_prefs);

可以在不编写任何其他代码的情况下进行网站链接(以及更多)!以下是我无需编写单行Java即可实现的功能演示代码("链接"部分):
enter image description here

启动网站是最简单的。请注意,这些首选项都没有任何键,因此即使我愿意也无法从代码中访问它们。当然,缺少钥匙是完全可选的。

的src /主/ RES / XML / my_prefs.xml

<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android"
    >
    <!-- whatever you had before -->
    <PreferenceCategory android:title="Links"><!-- optional header -->
        <Preference
            android:title="App info in settings"
            >
            <intent
                android:action="android.settings.APPLICATION_DETAILS_SETTINGS"
                android:data="package:my.app.package.name"
                />
        </Preference>
        <Preference
            android:title="App details in Play Store"
            >
            <intent
                android:action="android.intent.action.VIEW"
                android:data="market://details?id=my.app.package.name"
                />
        </Preference>
        <Preference
            android:title="Privacy Policy on our website"
            >
            <intent
                android:action="android.intent.action.VIEW"
                android:data="http://www.myapp.com/foo#bar"
                />
        </Preference>
        <Preference
            android:title="Send feedback"
            android:summary="via email">
            <intent android:action="android.intent.action.VIEW"
                    android:data="mailto:your@email.address">
                <extra android:name="android.intent.extra.TEXT"
                       android:value="Pre-filled email body." />
                <extra android:name="android.intent.extra.SUBJECT"
                       android:value="Pre-filled email subject" />
            </intent>
        </Preference>
        <Preference
            android:title="@string/about_title"
            android:summary="@string/app_name"
            >
            <!-- @strings are the same as used in AndroidManifest.xml;
            about_title is from <activity> label,
            app_name is from <application> label. -->
            <intent
                android:targetClass="my.app.AboutActivity"
                android:targetPackage="my.app.package.name"
            />
        </Preference>
    </PreferenceCategory>
</PreferenceScreen>