我正在尝试从服务开始活动数天。这不是那么难!我想要的只是:
1)从后台服务启动活动(由AlarmManager安排)。目前我正在使用此代码
Intent i = new Intent(this, MyDialogActivity.class);
i.putExtra(MyDialogActivity.TEXT, myObject.getText());
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
2)显示此活动,当根活动位于顶部时,通过后退按钮销毁根活动,同时通过主页按钮暂停根活动
3)在设备处于待机状态时显示此活动(应在用户从待机状态唤醒设备后显示活动)
4)确定销毁活动并在用户看到活动并按下按钮(包括主页和后退按钮)后发送广播。目前我正在使用此代码执行此操作(pm是PowerManager)
protected void onPause() {
if (pm.isScreenOn()) {
sendBroadcast(retValue);
if (!isFinishing()) {
finish();
} else {
moveTaskToBack(true);
}
}
super.onPause();
}
5)防止此活动可以从调用服务以外的其他点开始。目前我在AndroidManifest中设置此属性:
机器人:名称= “activities.MyDialogActivity” 机器人:noHistory = “真” 机器人:excludeFromRecents = “真”
但无论我在做什么,我都无法实现2)和3)。有人能帮助我吗?
谢谢!
答案 0 :(得分:1)
从服务启动活动时遇到了同样的问题。我试图启动系统语音拨号器。
我的问题是因为我使用的是Application Context(this.getApplicationContext())。一旦我改为“这个”就行了。
此代码适用于我:
Intent intent = new Intent(Intent.ACTION_VOICE_COMMAND);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
我使用以下方式获取上下文:
public void onCreate() {
super.onCreate();
Log.i(TAG, "Service created");
context = this;
...
}