2016-07-06 12 views
-1

私はAndroid App Developmentを初めて使用しています。私は受信機クラスを持っているアプリを開発しています。私は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

あなたのshureは条件が満たされていますか?そこにトーストトーストを入れて確認してください。 – statosdotcom

答えて

0

間違っているところ私を導いてください、あなたはIntentFilterにACTION_SCREEN_OFFACTION_SCREEN_ONを追加しましたか?

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ブロックをサービスクラスの中に置き、受信側クラスによってそのサービスを開始しました。うまくいきます!

関連する問題