android - 从 PreferenceScreen 发送广播 Intent ?

标签 android android-intent broadcast preferencescreen

是否可以直接从 PreferenceScreen 发送广播 Intent ?

例如,我想做如下的事情:

<PreferenceScreen android:title="Enable">
<intent android:action="com.otherapp.ENABLE" />
</PreferenceScreen>

但是当我尝试此操作时,应用程序 FC 出现 ActivityNotFoundException。

顺便说一句,接收者简单地定义为:

<receiver android:name=".Receiver">
<intent-filter>
<action android:name="com.otherapp.ENABLE" />
</intent-filter>
</receiver>

此广播接收器已经过测试,工作正常,但只是不能从 PreferenceScreen 进行测试。

TIA!

最佳答案

您可以扩展Preference,使其在点击时发送广播:

public class BroadcastPreference extends Preference implements Preference.OnPreferenceClickListener {
    public BroadcastPreference(Context context, AttributeSet attrs) {
        super(context, attrs);

        this.setOnPreferenceClickListener(this);
    }

    @Override
    public boolean onPreferenceClick(Preference preference) {
        getContext().sendBroadcast(getIntent());
        return true;
    }
}

然后在 xml 文件中使用您的自定义首选项

<com.app.example.BroadcastPreference android:title="Enable">
    <intent android:action="com.otherapp.ENABLE" />
</com.app.example.BroadcastPreference>

关于android - 从 PreferenceScreen 发送广播 Intent ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7394443/

相关文章:

android - 通过多个 Activity 保持android蓝牙连接

c - 使用多个 NIC 广播 UDP 数据包

java - 如何使用 Android 2.36 (Gingerbread) 开发/编码 WIFI Direct?

Android:XML 布局问题

android - react native 。安卓。推送通知权限

php - 我想通过 retrofit2 api 从 Mysql 数据库中获取数据

android - 在主屏幕上打开拨号器应用程序

android - 使自定义对象的 ArrayList 可打包

android - UDP 广播 : Motorola block incoming ports?

javascript - 使用 $scope.$emit() 在组件之间传递数据