android – 通过选中取消选中CheckBoxPreference来启动停止服务

android – 通过选中取消选中CheckBoxPreference来启动停止服务,第1张

概述我正在通过选中或取消选中CheckBoxPreference来编写启动停止服务的应用程序 我试图找到一些信息,如示例代码或教程.但我还没找到. 如何通过选中或取消选中CheckBoxPreference来启动或停止服务 在PreferenceActivity中?我想在“service_toggle”键为true时启动服务,并在“service_toggle”键为false时停止服务是否有任何关于 我正在通过选中或取消选中CheckBoxPreference来编写启动或停止服务的应用程序
我试图找到一些信息,如示例代码或教程.但我还没找到.
如何通过选中或取消选中CheckBoxPreference来启动或停止服务
在PreferenceActivity中?我想在“service_toggle”键为true时启动服务,并在“service_toggle”键为false时停止服务是否有任何关于启动/停止服务的示例代码或教程通过选中/取消选中CheckBoxPreference?

这是我的代码:

Settings.java

package kr.hybdms.sIDepanel;import androID.content.Intent;import androID.net.Uri;import androID.os.Bundle;import androID.preference.Preference;import androID.preference.Preference.OnPreferenceClickListener;import com.actionbarsherlock.app.SherlockPreferenceActivity;import kr.hybdms.sIDepanel.R;public class Settings extends SherlockPreferenceActivity implements OnPreferenceClickListener{      @SuppressWarnings("deprecation")      @OverrIDe      public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        addPreferencesFromresource(R.xml.settings);        Preference pAppname = (Preference)findPreference("blog_intent");        Preference pAppVersion = (Preference)findPreference("appinfo_intent");        pAppname.setonPreferenceClickListener(this);        pAppVersion.setonPreferenceClickListener(this);    }    @OverrIDe    public boolean onPreferenceClick(Preference preference)    {        if(preference.getKey().equals("blog_intent"))        {            Intent blog = new Intent(Intent.ACTION_VIEW);            blog.setData(Uri.parse("http://hybdms.blogspot.kr"));            startActivity(blog);        }        else if(preference.getKey().equals("appinfo_intent"))        {            Intent appinfo = new Intent(Settings.this,Appinfo.class);              startActivity(appinfo);        }        return false;    }}

的settings.xml

<?xml version="1.0" enCoding="utf-8"?><PreferenceScreen        xmlns:androID="http://schemas.androID.com/apk/res/androID">    <CheckBoxPreference androID:key="service_toggle" androID:title="@string/pref_service_toggle" androID:summary="@string/pref_service_toggle_sub" androID:defaultValue="false"/>    <CheckBoxPreference androID:key="autostart_toggle" androID:title="@string/pref_auto" androID:summary="@string/pref_auto_sub" androID:defaultValue="false" androID:selectable="false" androID:enabled="false"/>    <Preference androID:key="guIDe_intent" androID:selectable="false" androID:summary="@string/pref_guIDe_sub" androID:title="@string/pref_guIDe" androID:enabled="false"/>    <Preference androID:key="blog_intent" androID:summary="@string/pref_blog_sub" androID:title="@string/pref_blog"/>    <Preference androID:key="appinfo_intent" androID:summary="@string/pref_appinfo_sub" androID:title="@string/pref_appinfo"/></PreferenceScreen>

touchDetectService.java

package kr.hybdms.sIDepanel;import androID.app.Service;import androID.content.Intent;import androID.os.IBinder;import androID.vIEw.Gravity;import androID.vIEw.MotionEvent;import androID.vIEw.VIEw;import androID.vIEw.VIEw.OntouchListener;import androID.vIEw.WindowManager;import androID.Widget.ImageVIEw;import androID.graphics.PixelFormat;public class touchDetectService extends Service {    private ImageVIEw mtouchDetector;                               private WindowManager.LayoutParams mParams;         private WindowManager mWindowManager;           private OntouchListener mVIEwtouchListener = new OntouchListener() {        @OverrIDe public boolean ontouch(VIEw v,MotionEvent event) {            switch(event.getAction()) {                case MotionEvent.ACTION_MOVE:                    Intent lsp = new Intent(getBaseContext(),leftSIDePanel.class);                    lsp.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);                    getApplication().startActivity(lsp);                    break;            }            return true;        }    };    @OverrIDe    public IBinder onBind(Intent arg0) { return null; }    @OverrIDe    public voID onCreate() {        super.onCreate();            mtouchDetector = new ImageVIEw(this);                                                     mtouchDetector.setimageResource(R.drawable.detector);            mtouchDetector.setontouchListener(mVIEwtouchListener);                        mParams = new WindowManager.LayoutParams(                WindowManager.LayoutParams.WRAP_CONTENT,WindowManager.LayoutParams.WRAP_CONTENT,WindowManager.LayoutParams.TYPE_PHONE,WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,PixelFormat.TRANSLUCENT);                                                    mParams.gravity = Gravity.left | Gravity.CENTER;                              mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);              mWindowManager.addVIEw(mtouchDetector,mParams);      permission         }    @OverrIDe    public voID onDestroy() {        if(mWindowManager != null) {                    if(mtouchDetector != null) mWindowManager.removeVIEw(mtouchDetector);        }        super.onDestroy();    }
解决方法
CheckBoxPreference checkBoxPref = (CheckBoxPreference)getPreferenceManager().findPreference("service_toggle");checkBoxPref.setonPreferencechangelistener(new Preference.OnPreferencechangelistener() {                public boolean onPreferenceChange(Preference preference,Object newValue) {        boolean myValue = (Boolean) newValue;        if(myValue)            startService(new Intent(Settings.this,touchDetectService.class));        else            stopService(new Intent(Settings.this,touchDetectService.class));        return true;    }});
总结

以上是内存溢出为你收集整理的android – 通过选中/取消选中CheckBoxPreference来启动/停止服务全部内容,希望文章能够帮你解决android – 通过选中/取消选中CheckBoxPreference来启动/停止服务所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1121991.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存