在Android上,我正在尝试设计一个活动来引导用户完成一些系统设置更改。我知道如何检测设置是否已启用,我会将该检查放在后台线程的循环中,并且正确检测用户何时进行更改。我希望我的活动在更改发生时自动弹回到前台。我在那里有一个startActivity调用,但是它没有工作。
final Thread mSettingCheck = new Thread() {
@Override
public void run() {
try {
for (int i = 0; i < 600; i++) {
if (WizardUtils.isSettingChecked()) {
Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(getApplicationContext(), WizardActivity.class);
startActivity(intent);
}
});
Log.i("tag", "yay!");
break;
}
sleep(500);
}
} catch (Exception e) {
e.printStackTrace();
}
}
};
我得到日志输出行说“yay”所以我知道它正在检测,但我没有看到活动启动到前台。谁知道我做错了什么?
答案 0 :(得分:0)
这里的解决方法是使用Pending Intent。
private void returnToWizard() {
Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
@Override
public void run() {
Intent intent = new Intent("android.intent.category.LAUNCHER");
intent.setClassName("package name", "activity name");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent i2 = PendingIntent.getActivity(getApplicationContext(), 0, intent,
Intent.FLAG_ACTIVITY_NEW_TASK);
try {
i2.send(getApplicationContext(), 0, intent);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}