Java 如何结束此活动?

Java 如何结束此活动?,java,android,android-layout,android-ndk,android-manifest,Java,Android,Android Layout,Android Ndk,Android Manifest,我创建了一个由短信触发的锁屏应用程序。。我有一个ListenSMS类,它总是监听传入的短信。代码如下: for (SmsMessage message : messages) { String tempMessage[] = message.getDisplayMessageBody().toString().split(" "); //checking command dan password if (temp

我创建了一个由短信触发的锁屏应用程序。。我有一个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 unlock
时转到lockscreen.java with intent extra(putExtra)
kill
这是我的锁屏。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,所以我在intent“kill”上添加了额外的内容,并在lockscreen.java中检查它。这个lockscreen.java可以检查额外的意图,可以显示toast“extra accepted”,但可以使用finish()关闭锁屏活动

目前我的假设是,
Intent.FLAG\u ACTIVITY\u NEW\u TASK
正在复制锁定活动。因此,它将创建一个双锁屏活动,finish方法将关闭另一个由
Intent.FLAG\u activity\u NEW\u TASK
启动的lockscreen.java。这只是假设。我错了吗?请纠正我

有人知道如何解决我的问题吗?我真的希望“andro unlock”命令可以关闭锁屏活动,并需要它为我的大学期末项目工作。请帮助。

来自:


我想你的问题在别的地方。我建议让lockscreen活动注册一个BroadcastReceiver,然后在收到解锁消息时发送一个BroadcastReceiver将捕获的意图。然后活动可以完全退出。

试试这个:
Intent.FLAG\u Activity\u NEW\u TASK
对不起,我不能理解你的建议,因为我还是android新手。。您知道如何从服务关闭活动吗??感谢要结束活动,您需要向其发送某种信号。最简单的信号是意图。您可以按照中所述注册一个BroadcastReceiver,然后只需激发一个匹配的意图。我在listenSMS服务中发出了一个意图信号。。我被赋予了额外的意图(“杀死”),并在lockscreen.java中阅读它们。。lockscreen.java已收到信号,它可以显示toast“extra accepted”,但无法运行finish()方法??你知道为什么吗??这里真的很混乱。。谢谢……看一下。
When using this flag, if a task is already running for the activity you are now starting, then a new activity will not be started; instead, the current task will simply be brought to the front of the screen with the state it was last in. See FLAG_ACTIVITY_MULTIPLE_TASK for a flag to disable this behavior.