実行中のサービスから広告を表示したい。私のサービスは、テキストのクリップボードをチェックし、情報を含むポップアップ ウィンドウを表示します (辞書サービス)。しかし、アプリをデバッグすると、エラーが表示されます:
Could not initialize AdView: AdView was initialized with a Context that wasn't an Activity.
アクティビティのコンテキストがないと開始できないと言う人もいました。これで解決策はありますか?
以下のコードを更新します: ポップアップ ウィンドウを表示するコード:
private void showCaptureWindow() {
setTextToKeywordEdit(mClipboardText);
makeDictContent(mClipboardText);
if(!mDictContentView.hasFocus())
mDictContentView.requestFocus();
if(false == bHasAddedView)
{
int bgColor = MultiDictUtils.GetBgColor();
int textColor = MultiDictUtils.GetTextColor();
mParentViewLayout.setBackgroundColor(bgColor);
mDictContentView.setBackgroundColor(bgColor);
mLineView0.setBackgroundColor(textColor);
mLineView1.setBackgroundColor(textColor);
mLineView2.setBackgroundColor(textColor);
mLineView3.setBackgroundColor(textColor);
mLineView4.setBackgroundColor(textColor);
updateDisplaySize(true);
mWindowParams.x = mWindow_Default_X;
mWindowParams.y = mWindow_Default_Y;
mWinStatus = 0;
mWindowResizeBtn.setImageResource(R.drawable.ic_btn_max_win);
// Look up the AdView as a resource and load a request.
adView = (AdView)mCaptureWindowLayout.findViewById(R.id.adView);
adView.loadAd(new AdRequest());
mWindowManager.addView(mCaptureWindowLayout, mWindowParams);
bHasAddedView = true;
}
}
サービスを開始します。
private void initService() {
MyLog.v(TAG, "initService()");
mClipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
if(mClipboardManager.hasText())
{
mClipboardText = mClipboardManager.getText().toString();
}
LayoutInflater factory = LayoutInflater.from(this);
mCaptureWindowLayout = (LinearLayout)factory.inflate(R.layout.capture_window, null);
mWindowCloseBtn = (ImageButton)mCaptureWindowLayout.findViewById(R.id.windowCloseBtn);
mWindowResizeBtn = (ImageButton)mCaptureWindowLayout.findViewById(R.id.windowResizeBtn);
mWindowMoveBtn = (ImageButton)mCaptureWindowLayout.findViewById(R.id.windowMoveBtn);
mWindowSchBtn = (ImageButton)mCaptureWindowLayout.findViewById(R.id.windowSchBtn);
mKeywordEdit = (EditText)mCaptureWindowLayout.findViewById(R.id.keywordTxt);
mParentViewLayout = (LinearLayout) mCaptureWindowLayout.findViewById(R.id.parentView);
mLineView0 = (View) mCaptureWindowLayout.findViewById(R.id.lineView0);
mLineView1 = (View) mCaptureWindowLayout.findViewById(R.id.lineView1);
mLineView2 = (View) mCaptureWindowLayout.findViewById(R.id.lineView2);
mLineView3 = (View) mCaptureWindowLayout.findViewById(R.id.lineView3);
mLineView4 = (View) mCaptureWindowLayout.findViewById(R.id.lineView4);
mDictContentView = (WebView)mCaptureWindowLayout.findViewById(R.id.dictContentWindow);
mDictContentView.setWebViewClient(new DictWebViewClient(new ServiceWebViewClientCallback()));
WebSettings webSettings = mDictContentView.getSettings();
webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportZoom(true);
作成時:
@Override
public void onCreate() {
mMultiDictUtils = new MultiDictUtils(this);
mHandler = new Handler();
mClipboardTask = new Runnable() {
public void run() {
clipboardCheck();
mHandler.postDelayed(mClipboardTask, CLIPBOARD_TIMER);
}
};
Runnable initServiceTask = new Runnable() {
public void run() {
initService();
mHandler.postDelayed(mClipboardTask, CLIPBOARD_TIMER);
}
};
mHandler.postDelayed(initServiceTask, 5000);
super.onCreate();
}
ここに完全なコードを投稿できないため、申し訳ありません。サービス チェック クリップボードがあり、コンテンツをビュー レイアウトで表示します。