0

キーボードのサービスで、メインアクティビティを開始できません:

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");
    } 

その結果、エラーがポップアップします

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)
4

2 に答える 2

1

Manifest.xmlからの変化

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

なので

        <intent-filter>
            <action android:name="android.intent.action.MAINACTIVITY" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

そして、あなたの意図から、..

        Intent intent = new Intent("android.intent.action.MAINACTIVITY");
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
        startActivity(intent);

これを試して..

于 2012-12-03T07:07:17.927 に答える
1

logCat で、彼はFLAG_ACTIVITY_NEW_TASKflag を使用することを提案しているので、次のことを試してください。

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");
} 
于 2012-12-03T07:04:20.913 に答える