2011-08-04 16 views
0

iはSMSでtrigerred私のロック画面アプリケーションを作成しました..私はいつも入ってくるSMSをリッスンListenSMSクラスを持っている...ここにコードです:このアクティビティを閉じるには? (アンドロイド)

for (SmsMessage message : messages) 
         { 
          String tempMessage[] = message.getDisplayMessageBody().toString().split(" "); 

          //checking command dan password        
          if (tempMessage[0].toString().equalsIgnoreCase("andro-lock") && tempMessage[1].toString().equals(tempPassword.toString())) 
          { 
           //Toast.makeText(ListenSMSservice.this, "Menjalankan command andro-lock", Toast.LENGTH_LONG).show(); 
           openDatabase(); 
           updateStatusL(); 
           Intent myIntent = new Intent(ListenSMSservice.this,LockScreenForm.class); 
           myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
           getApplication().startActivity(myIntent); 
          } 
          else if (tempMessage[0].toString().equalsIgnoreCase("andro-unlock") && tempMessage[1].toString().equals(tempPassword.toString())) 
          { 
           //Toast.makeText(ListenSMSservice.this, "Menjalankan command andro-unlock", Toast.LENGTH_LONG).show(); 
           openDatabase(); 
           updateStatusNL();                 
           Intent myIntent = new Intent(ListenSMSservice.this,LockScreenForm.class); 
           myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
           Bundle myKillerBundle = new Bundle(); 
           myKillerBundle.putString("kill","1"); 
           myIntent.putExtras(myKillerBundle); 
           getApplication().startActivity(myIntent); 

          } 

         } 

ListenSMSサービスは「andro-を受けている場合lock "コマンドを受け取ると、lockscreen.javaに行き、" andro-unclock "コマンドを受け取ると、" kill "というintを使ってlockscreen.javaに行きます。ここに私のlockscreen.javaがあります:

public class LockScreenForm extends Activity implements OnClickListener{ 
    /** Called when the activity is first created. */ 

    @Override 
    public void onCreate(Bundle bundle) { 
     super.onCreate(bundle); 
     setContentView(R.layout.lockscreen);    

     Bundle extra = getIntent().getExtras(); 
     if (extra == null) { 
      return; 
     } 
     //Toast.makeText(this, extra.getString("kill"), 1).show(); 
     else if(this.getIntent().getExtras().getString("kill").equalsIgnoreCase("1")){ 
      try { 
       Toast.makeText(this, "extra accepted", 1).show(); 
       finish(); 
      } catch (Exception e) { 
       // TODO: handle exception 
       Toast.makeText(this, e.getMessage(), 1).show(); 
      } 

     } 

    } 

私のListenSMSサービスが "andro-unlock"コマンドを受信したときに私のlocksreen.javaを閉じたいので、私は余分なインテント( "kill")を入れますlockscreen.javaで確認してください。このlockscreen.javaは余分なインテントをチェックでき、 "余分に受け入れられました"というトーストを表示できますが、finish()でlockscreenアクティビティを閉じることができます。

私の前提は、 .FLAG_ACTIVITY_NEW_TASKはロック画面のアクティビティを複製しているので、ダブルロック画面のアクティビティが作成され、終了方法はIntent.FLAG_ACTIVITY_NEW_TASKによって開始された別のlockscreen.javaを閉じます。これは唯一の仮定です。私は間違っていますか?私を修正してください。

誰も私の問題を解決する方法を知っていますか?私は本当にから「アンドロ・ロック解除」コマンドは、ロック画面の活動を閉じて、それは私の大学最終的なプロジェクトのために働く必要があることができますしたい.. ..

に関して、

マイケルを助けてください..

答えて

1

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK

私はあなたの問題がどこか別のものであると予想しています。私は、lockscreenアクティビティにBroadcastReceiverを登録させることを提案し、アンロックメッセージが受信されると、BroadcastReceiverがキャッチするインテントを送信します。アクティビティは正常終了することができます。

+0

申し訳ありません申し訳ありませんが、私はまだアンドロイドの初心者ですので、あなたの提案を理解できません..あなたはサービスから活動を閉じる方法を知っていますか?ありがとう –

+1

アクティビティを閉じるには、何らかの信号を送信する必要があります。最も簡単な信号はインテントです。 BroadcastReceiverはhttp://stackoverflow.com/questions/4794776/start-broadcastreceiver-from-activityに記述されているように登録してから、一致するIntentを起動することができます。 – Femi

+0

私はlistenSMSサービスでインテントシグナルを作っていました。余分なインテント( "kill")を入れてlockscreen.javaでそれらを読みました.. lockscreen.javaはシグナルを受信しました。 finish()メソッドを実行できませんか?なぜなのかご存知ですか??ここで本当に混乱しています..ありがとう.. –

関連する問題