11

カスタムナビゲーションバーをAndroid4.0.3.r1にマックしていて、「ホーム」や「戻る」などの主要なイベントを送信したいと考えています。したがって、私のアプリケーションはシステムではありません。

IWindowManager mWindowManager = IWindowManager.Stub.asInterface(
                ServiceManager.getService(Context.WINDOW_SERVICE));
mWindowManager.injectKeyEvent( ev, false );

android.permission.INJECT_EVENTSシステム以外のアプリケーションから取得できないため、動作しません。これどうやってするの?

4

9 に答える 9

4

あなたはこれを試すことができます

try
{
    String keyCommand = "input keyevent " + KeyEvent.KEYCODE_MENU;
    Runtime runtime = Runtime.getRuntime();
    Process proc = runtime.exec(keyCommand);
}
catch (IOException e)
{
    // TODO Auto-generated catch block
    e.printStackTrace();
}

もちろん、テキストを入力するためのコマンドを選択できますinput text ...

于 2013-11-14T02:13:25.353 に答える
2

これらはどれも有効ではありません。以下のコードを使用してホーム画面に移動します。

Intent home = new Intent(Intent.ACTION_MAIN);
home.addCategory(Intent.CATEGORY_HOME);
//home.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(home);

アクティビティ/フラグメントから呼び出していない場合は、フラグ部分のコメントを解除する必要がある場合があります。以下のコードに戻ると、一部のデバイスで動作します。

dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK));
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK));

これが役立つかどうか教えてください!

于 2016-09-26T15:29:56.730 に答える
0

これを試すことができます。

long now = SystemClock.uptimeMillis();
BaseInputConnection mInputConnection = new BaseInputConnection(findViewById(R.id.MainActivity), true);
KeyEvent down = new KeyEvent(now, now, KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_HOME, 0);
mInputConnection.sendKeyEvent(down);

このコードは私のために働くことができます。

注:「R.id.MainActivity」をアクティビティ名に置き換えることを忘れないでください。

于 2016-08-18T11:22:34.910 に答える
0

InputConnectionsendKeyEvent機能もあります。InputConnectionAPI レベル 3 のみです。

于 2013-05-14T16:05:13.813 に答える