2016-07-06 63 views
-1

我是Android应用程序开发新手。我正在开发一个应用程序,其中我有一个接收器类。我厌倦了if语句。即使条件满足,它内部的代码也不会执行。以下是我的代码:即使在条件满足的情况下也不能工作的代码

MyReceiver.java

package eg.app7; 

import android.app.admin.DevicePolicyManager; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 
import android.widget.Toast; 

public class MyReceiver extends BroadcastReceiver { 
public static boolean screenOff; 
DevicePolicyManager dpm; 

SharedPrefs sharedPrefs; 



public MyReceiver() { 
} 

@Override 
public void onReceive(Context context, Intent intent) { 
    //Toast.makeText(context,"Changed",Toast.LENGTH_SHORT).show(); 

    System.out.println("onReceive "); 
    if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 
     screenOff = true; 
    } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 
     screenOff = false; 
    } 


    // The below if statement is my problem 
    if(sharedPrefs.getBoolValue(context,"hhmmkey")) { 
     Intent i = new Intent(context, TimePinService.class); 
     context.startService(i); 
    } 



    } 
} 

请指引我在哪里,我错了

+0

不好意思,你收到了一些错误信息?如果您将上次提交更改为** context.startActivity(i); **?哦,我现在看到,这是一项服务... – statosdotcom

+0

不,我没有收到任何错误消息。这应该是context.startService(i); –

+0

你的舒适条件是否满足?在那里敬酒敬酒检查。 – statosdotcom

回答

0

你确定你添加ACTION_SCREEN_OFFACTION_SCREEN_ON到的IntentFilter?

public void registerMyReceiver() { 
    MyReceiver myReceiver = new MyReceiver(); 
    IntentFilter intentFilter = new IntentFilter(); 

    intentFilter.addAction(Intent.ACTION_SCREEN_OFF); 
    intentFilter.addAction(Intent.ACTION_SCREEN_ON); 

    registerReceiver(myReceiver, intentFilter); 
} 
0

感谢您的所有建议家伙。但我找到了一个很好的解决方案我已经将if块放入服务类中,然后由接收者类启动该服务。效果很好!

相关问题