0

Android OS では、リフレクションを使用して以下を取得しIWindowManagerます。

Class tempClass = Class.forName("android.os.ServiceManager");
Method method = tempClass.getMethod("getService", String.class);
IBinder binder = (IBinder) method.invoke(null,new Object[] { "window" });
IWindowManager mIWM = IWindowManager.Stub.asInterface(binder);

リフレクションを使用して、次を取得しViewServerます。

Class mViewServer = Class.forName("com.android.server.ViewServer");

ただし、次のコードを使用すると、次がスローされjava.lang.IllegalArgumentExceptionます。

Constructor ct = mViewServer.getDeclaredConstructor(Class.forName("com.android.server.WindowManagerService"));
ct.setAccessible(true);
Object mVSObject = ct.newInstance(mIWM);

ViewServerコンストラクターは次のとおりです。

ViewServer(WindowManagerService windowManager) {
    ...
}

誰が私を助けることができます、どうもありがとうございました!

4

3 に答える 3

0

私はAndroid 4.0ソースコードを使用しViewServerており、コンストラクターは1つしかありません:

ViewServer(WindowManagerService windowManager, int port) {
        mWindowManager = windowManager;
        mPort = port;
    }

しかし、あなたのコード:

Constructor ct = mViewServer.getDeclaredConstructor(Class.forName("com.android.server.WindowManagerService"));

スローがないNoSuchMethodExceptionので、これを持っている可能性がありますConstructor

これを試すことができます:convertと入力して、この引数を渡します

(WindowManagerService)mIWM 

それでもうまくいかない場合は、この方法を使用してViewServerすべてを印刷することをお勧めします。Constructors

class.getDeclaredConstructors();

Constructors引数が存在することを確認します。

于 2012-04-17T10:05:40.973 に答える
0

ViewServer を使用するには、クラス ViewServer.java をプロジェクトに追加し、 onCreate 、 onResume 、および onDestroy でインスタンス化する必要があります。例を次に示します。

public class ViewServerActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ViewServer.get(this).addWindow(this);
}

@Override
protected void onResume() {
    super.onResume();
    ViewServer.get(this).setFocusedWindow(this);

}

@Override
protected void onDestroy() {

    super.onDestroy();
    ViewServer.get(this).removeWindow(this);
}

}

クラス ViewServer.java ViewServer.javaへの URL は次のとおりです。

于 2013-09-27T15:51:01.213 に答える