[英]Can't call main Activity from service
In Service of Keyboard i cant start Main Activity: 在键盘服务中我无法启动主要活动:
public void onKey(int primaryCode, int[] keyCodes)
Log.d(TAG, primaryCode + " PrimaryCode to send");
if (primaryCode == 6) {
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
Log.d(TAG, primaryCode + " Greating is command");
}
As a result, an error pops up 结果,弹出一个错误
LogCat: logcat的:
12-03 10:46:07.613: E/InputEventReceiver(2776): Exception dispatching input event.
12-03 10:46:07.613: E/MessageQueue-JNI(2776): Exception in MessageQueue callback: handleReceiveCallback
12-03 10:46:07.613: E/MessageQueue-JNI(2776): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
12-03 10:46:07.613: E/MessageQueue-JNI(2776): at android.app.ContextImpl.startActivity(ContextImpl.java:944)
12-03 10:46:07.613: E/MessageQueue-JNI(2776): at android.app.ContextImpl.startActivity(ContextImpl.java:931)
12-03 10:46:07.613: E/MessageQueue-JNI(2776): at android.content.ContextWrapper.startActivity(ContextWrapper.java:284)
12-03 10:46:07.613: E/MessageQueue-JNI(2776): at sample.stand.Keyb.onKey(Keyb.java:162)
In the logCat, he suggests to use FLAG_ACTIVITY_NEW_TASK
flag , so try the following: 在logCat中,他建议使用
FLAG_ACTIVITY_NEW_TASK
标志,因此请尝试以下操作:
if (primaryCode == 6) {
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Log.d(TAG, primaryCode + " Greating is command");
}
Change in the Manifest.xml
from 从
Manifest.xml
更改
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
as 如
<intent-filter>
<action android:name="android.intent.action.MAINACTIVITY" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
And call from yours Intent as,.. 并打电话给你的意图,...
Intent intent = new Intent("android.intent.action.MAINACTIVITY");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent);
Try this.. 尝试这个..
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.