是否可以直接从 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/