WebViewを使用してクライアント用のアンドロイドアプリを作成しています。 メディアを再生するクライアントのWebサイトにいくつかのリンクがあります。バッテリーを節約するために、ユーザーがウェブサイト内のこのメディアリンクをクリックすると、「FLAG_KEEP_SCREEN_ON」を呼び出そうとしています。私のwebviewは、Webview内のWebページの読み込みを処理するために、新しいMywebViewClient()を使用します。 MywebViewClientは実際にはshouldOverrideUrlLoading()をオーバーライドするプライベートクラスです。このメソッドは、ユーザーがメディアファイルを再生するリンクをクリックしたときを検出するので、「FLAG_KEEP_SCREEN_ON」を適用しようとしました。メディアファイルを再生するページでない場合は、「FLAG_KEEP_SCREEN_ON」をクリアします。 私が抱えている問題は、このメソッドはプライベートクラスの中にあるので、自分のアクティビティの参照を取得できないようです。おそらくコール:getWindow()。addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);このフラグを適用するウィンドウがわからない。私はおそらく何かマイナーなものだと確信していますが、私はこの内部クラスの内側からウィンドウをホストするアクティビティを取得しているようです。ここまでは私のコードです:Webview App内のプライベート内部クラス内の自分のアクティビティへの参照を取得できません
Webview w;
//inside onCreate
{
w.setWebViewClient(new WebViewClient());
}
private class MyWebViewClient{
if (Uri.parse(url).getHost().equals("WebsitesHost")) {
if(w.getUrl().equals("LinkThatPlaysMediaSound" &&
!getWindow.hasFeature(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)){
getWindow.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
if(!w.getUrl().equals("LinkThatPlaysMediaSound")
getWindow.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
return false;
}
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
}
outerclass.thisを試しましたか?ここで、outerclassはあなたのアクティビティ名で、 "this"はあなたにアクティビティインスタンスを与えます –
私はそれを試すことができます。しかし、私は、私は、この呼び出しが動作するかどうかわからないgetWindow.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)の呼び出しをOuterClass.this.getWindow.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)に変更する必要があります。 @AnkitAggarwal –