Я создал свое приложение блокировки экрана, которое запускается с помощью SMS. У меня есть класс ListenSMS, который всегда прослушивает входящие SMS. Вот код:
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
и перейдет к lockscreen.java с намерением extra (putExtra) kill
при получении команды andro-unclock
. Вот мой 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();
}
}
}
}
Я хочу закрыть свой locksreen.java, когда моя служба ListenSMS
получила команду "andro-unlock", поэтому я добавил дополнительно в намерение "kill" и проверил это в lockscreen.java. Этот lockscreen.java может проверять дополнительное намерение и может отображать тост «дополнительно принят», но может закрыть действие блокировки экрана с помощью finish ().
На данный момент я предполагаю, что Intent.FLAG_ACTIVITY_NEW_TASK
дублирует локскрин-активность. Таким образом, он создаст двойную блокировку экрана, а завершающий метод закроет другой файл lockscreen.java, запущенный Intent.FLAG_ACTIVITY_NEW_TASK
. Это только предположение. Я ошибся? Пожалуйста, поправьте меня.
Кто-нибудь знает, как решить мою проблему? Я действительно хочу, чтобы команда "andro-unlock" могла закрыть активность на экране блокировки, и чтобы она работала для моего финального проекта в колледже. Пожалуйста, помогите.