项目:AndroidHybridLib
文件:WebViewPool.java
public synchronized WrapperWebView getWebView() {
WrapperWebView webView = null;
if (sAvailable.size() > 0) {
webView = sAvailable.get(0);
sAvailable.remove(0);
} else {
// 无可用的webview时,自动扩容
webView = new WrapperWebView(new MutableContextwrapper(mContext));
ViewGroup.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);
webView.setLayoutParams(layoutParams);
}
sInUse.add(webView);
webView.loadUrl("");
return webView;
}
项目:mobile-sdk-android
文件:ViewUtil.java
public static Context getTopContext(View view) {
if (view == null) {
return null;
}
ViewParent parent = view.getParent();
if ((parent == null) || !(parent instanceof View)) {
if(view.getContext() instanceof MutableContextwrapper){
return ((MutableContextwrapper)view.getContext()).getBaseContext();
}
return view.getContext();
}
//noinspection ConstantConditions
while ((parent.getParent() != null)
&& (parent.getParent() instanceof View)) {
parent = parent.getParent();
}
return ((View) parent).getContext();
}
项目:mobile-sdk-android
文件:MRAIDAdActivity.java
@Override
public void create() {
if ((AdView.mraidFullscreenContainer == null) || (AdView.mraidFullscreenImplementation == null)) {
Clog.e(Clog.baseLogTag,"Launched MRAID Fullscreen activity with invalid properties");
adActivity.finish();
return;
}
// remove from any old parents to be safe
ViewUtil.removeChildFromParent(AdView.mraidFullscreenContainer);
adActivity.setContentView(AdView.mraidFullscreenContainer);
if (AdView.mraidFullscreenContainer.getChildAt(0) instanceof AdWebView) {
webView = (AdWebView) AdView.mraidFullscreenContainer.getChildAt(0);
}
// Update the context
if(webView.getContext() instanceof MutableContextwrapper) {
((MutableContextwrapper) webView.getContext()).setBaseContext(adActivity);
}
mraidFullscreenImplementation = AdView.mraidFullscreenImplementation;
mraidFullscreenImplementation.setFullscreenActivity(adActivity);
if (AdView.mraidFullscreenListener != null) {
AdView.mraidFullscreenListener.onCreateCompleted();
}
}
项目:AndroidHybridLib
文件:WebViewPool.java
public void initWebViewPool(Context context) {
this.mContext = context;
for (int i = 0; i < mPoolSize; i++) {
ViewGroup.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);
// 引入Context中间层MutableContextwrapper
WrapperWebView webView = new WrapperWebView(new MutableContextwrapper(mContext));
webView.setLayoutParams(layoutParams);
sAvailable.add(webView);
}
}
项目:AndroidHybridLib
文件:WebViewPool.java
public synchronized void resetWebView(WrapperWebView webView) {
((MutableContextwrapper) webView.getContext()).setBaseContext(mContext);
webView.reset();
sInUse.remove(webView);
if (sAvailable.size() < mPoolSize) {//保存个数不能大于池子的大小
sAvailable.add(webView);
} else { // 扩容出来的临时webview直接回收
webView.destroy();
}
}
项目:AndroidHybridLib
文件:WrapperWebView.java
@Override
public void onClick(View view) {
if (view.getId() == R.id.btn_close) {
if (getContext() instanceof MutableContextwrapper) {
Context baseContext = ((MutableContextwrapper) getContext()).getBaseContext();
if (baseContext instanceof Activity) {
((Activity) baseContext).finish();
}
} else if (getContext() instanceof Activity) {
((Activity) getContext()).finish();
}
} else if (view.getId() == R.id.btn_refresh) {
reload();
}
}
项目:XinFramework
文件:WebViewCache.java
protected XinWebView useWebView(Context ctx) {
XinWebView view = getWebView();
if (view != null) {
((MutableContextwrapper) view.getContext()).setBaseContext(ctx);
view.setIsUsed(true);
}
return view;
}
项目:react-native-preloader
文件:ReactPreLoader.java
/**
* Pre-load {@link ReactRootView} to local {@link Map},you may want to
* load it in prevIoUs activity.
*/
public static void init(Activity activity,ReactInfo reactInfo) {
if (CACHE_VIEW_MAP.get(reactInfo.getMainComponentName()) != null) {
return;
}
ReactRootView rootView = new ReactRootView(new MutableContextwrapper(activity));
rootView.startReactApplication(
((ReactApplication) activity.getApplication()).getReactNativeHost().getReactInstanceManager(),reactInfo.getMainComponentName(),reactInfo.getLaunchOptions());
CACHE_VIEW_MAP.put(reactInfo.getMainComponentName(),rootView);
}
项目:turbolinks-android
文件:TurbolinksHelper.java
/**
* <p>Creates the shared webView used throughout the lifetime of the TurbolinksSession.</p>
*
* @param applicationContext An application context.
* @return The shared WebView.
*/
static WebView createWebView(Context applicationContext) {
MutableContextwrapper contextwrapper = new MutableContextwrapper(applicationContext);
WebView webView = new WebView(contextwrapper);
configureWebViewDefaults(webView);
setWebViewLayoutParams(webView);
return webView;
}
项目:android-web-wrapper
文件:RetainedViewFragment.java
项目:android-web-wrapper
文件:RetainedViewFragment.java
项目:mobile-sdk-android
文件:VideoWebView.java
public VideoWebView(Context context,VideoAd owner,VideoRequestManager manager) {
super(new MutableContextwrapper(context));
this.owner = owner;
this.manager = manager;
setupSettings();
setup();
}
项目:mobile-sdk-android
文件:InstreamVideoView.java
private void updateMutableContext(ViewGroup layout) {
// Update the MutableContext Wrapper. with the new activity context.
if(this.getContext() instanceof MutableContextwrapper) {
((MutableContextwrapper)this.getContext()).setBaseContext(layout.getContext());
}
// Update the MutableContext Wrapper. with the new activity context.
if(this.videoWebView.getContext() instanceof MutableContextwrapper) {
((MutableContextwrapper)this.videoWebView.getContext()).setBaseContext(layout.getContext());
}
}
项目:mobile-sdk-android
文件:InterstitialAdActivity.java
private void setIAdView(InterstitialAdView av) {
adView = av;
if (adView == null) return;
adView.setAdImplementation(this);
layout.setBackgroundColor(adView.getBackgroundColor());
layout.removeAllViews();
if (adView.getParent() != null) {
((ViewGroup) adView.getParent()).removeAllViews();
}
InterstitialAdQueueEntry iAQE = adView.getAdQueue().poll();
// To be safe,ads from the future will be considered to have expired
// if Now-p.first is less than 0,the ad will be considered to be from the future
while (iAQE != null
&& (Now - iAQE.getTime() > InterstitialAdView.MAX_AGE || Now - iAQE.getTime() < 0)) {
Clog.w(Clog.baseLogTag,Clog.getString(R.string.too_old));
iAQE = adView.getAdQueue().poll();
}
if ((iAQE == null)
|| !(iAQE.getView() instanceof AdWebView))
return;
webView = (AdWebView) iAQE.getView();
// Update the context
if(webView.getContext() instanceof MutableContextwrapper) {
((MutableContextwrapper) webView.getContext()).setBaseContext(adActivity);
}
// lock orientation to ad request orientation
//@Todo need to change this check condition to reflect MRAID spec
if(!(webView.getCreativeWidth()==1 && webView.getCreativeHeight()==1)) {
AdActivity.lockToConfigOrientation(adActivity,webView.getorientation());
}
layout.addView(webView);
}
项目:mobile-sdk-android
文件:AdWebView.java
public AdWebView(AdView adView) {
super(new MutableContextwrapper(adView.getContext()));
this.adView = adView;
this.initialMraidStateString = MRAIDImplementation.MRAID_INIT_STATE_STRINGS[
MRAIDImplementation.MRAID_INIT_STATE.STARTING_DEFAULT.ordinal()];
setupSettings();
setup();
}
项目:mobile-sdk-android
文件:AdView.java
protected void close(int w,int h,MRAIDImplementation caller) {
// Remove MRAID close button
ViewUtil.removeChildFromParent(close_button);
close_button = null;
if (caller.owner.isFullScreen) {
ViewUtil.removeChildFromParent(caller.owner);
if (caller.getDefaultContainer() != null) {
caller.getDefaultContainer().addView(caller.owner,0);
}
if (caller.getFullscreenActivity() != null) {
caller.getFullscreenActivity().finish();
}
// Reset the context of MutableContext wrapper for banner expand and close case.
if (getMediaType().equals(MediaType.BANNER) && (caller.owner.getContext() instanceof MutableContextwrapper)) {
((MutableContextwrapper) caller.owner.getContext()).setBaseContext(getContext());
}
}
// null these out for safety
mraidFullscreenContainer = null;
mraidFullscreenImplementation = null;
mraidFullscreenListener = null;
MRAIDChangeSize(w,h);
mraid_is_closing = true;
isMRAIDExpanded = false;
}
项目:AndroidHybridLib
文件:WrapperWebView.java
项目:XinFramework
文件:WebViewCache.java
protected XinWebView initWebView() {
XinWebView view = new XinWebView(new MutableContextwrapper(getApplication()));
put(view);
return view;
}
项目:react-native-preloader
文件:MrReactActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getUseDeveloperSupport() && Build.VERSION.SDK_INT >= 23) {
// Get permission to show redBox in dev builds.
if (!Settings.canDrawOverlays(this)) {
Intent serviceIntent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
startActivity(serviceIntent);
FLog.w(ReactConstants.TAG,REDBox_PERMISSION_MESSAGE);
Toast.makeText(this,REDBox_PERMISSION_MESSAGE,Toast.LENGTH_LONG).show();
}
}
mReactRootView = ReactPreLoader.getRootView(getReactInfo());
if (mReactRootView != null) {
Log.i(TAG,"use pre-load view");
MutableContextwrapper contextwrapper = (MutableContextwrapper) mReactRootView.getContext();
contextwrapper.setBaseContext(this);
try {
ViewGroup viewGroup = (ViewGroup) mReactRootView.getParent();
if (viewGroup != null) {
viewGroup.removeView(mReactRootView);
}
} catch (Exception exception) {
Log.e(TAG,"getParent error",exception);
}
} else {
Log.i(TAG,"createRootView");
mReactRootView = createRootView();
if (mReactRootView != null) {
mReactRootView.startReactApplication(
getReactNativeHost().getReactInstanceManager(),getMainComponentName(),getLaunchOptions());
}
}
setContentView(mReactRootView);
mDoubleTapReloadRecognizer = new DoubleTapReloadRecognizer();
}
项目:android-web-wrapper
文件:RetainedViewFragment.java
public static View inflateRetainableView(Context context,int layoutId,ViewGroup container)
{
LayoutInflater inflater = LayoutInflater.from(context)
.cloneInContext(new MutableContextwrapper(context));
return inflater.inflate(layoutId,container,false);
}
项目:mobile-sdk-android
文件:VideoWebView.java
void loadURLInCorrectbrowser(String url) {
if (!owner.getopensNativebrowser()) {
Clog.d(Clog.baseLogTag,Clog.getString(R.string.opening_inapp));
//If it's a direct URL to the play store,just open it.
if (checkForApp(url)) {
return;
}
try {
final WebView out;
// Unless disabled by the user,handle redirects in background
if (owner.getLoadsInBackground()) {
// Otherwise,create an invisible 1x1 webview to load the landing
// page and detect if we're redirecting to a market url
out = new RedirectWebView(this.getContext());
out.loadUrl(url);
out.setVisibility(View.GONE);
// owner.addView(out);
if (this.owner.getShowLoadingIndicator()) {
//Show a dialog Box
progressDialog = new ProgressDialog(this.getContextFromMutableContext());
progressDialog.setCancelable(true);
progressDialog.setonCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
out.stopLoading();
}
});
progressDialog.setMessage(getContext().getResources().getString(R.string.loading));
progressDialog.setProgressstyle(ProgressDialog.STYLE_SPINNER);
progressDialog.show();
}
} else {
// Stick the URL directly into the new activity.
out = new WebView(new MutableContextwrapper(getContext()));
WebviewUtil.setWebViewSettings(out);
out.loadUrl(url);
openInAppbrowser(out);
}
} catch (Exception e) {
// Catches PackageManager$NameNotFoundException for webview
Clog.e(Clog.baseLogTag,"Exception initializing the redirect webview: " + e.getMessage());
}
} else {
Clog.d(Clog.baseLogTag,Clog.getString(R.string.opening_native));
openNativeIntent(url);
}
}
项目:mobile-sdk-android
文件:VideoWebView.java
项目:mobile-sdk-android
文件:InstreamVideoView.java
InstreamVideoView(Context context,AttributeSet attrs,int defStyle) {
super(new MutableContextwrapper(context),attrs,defStyle);
setup(context);
}
项目:mobile-sdk-android
文件:AdWebView.java
void loadURLInCorrectbrowser(String url) {
if (!adView.getopensNativebrowser()) {
Clog.d(Clog.baseLogTag,handle redirects in background
if (adView.getLoadsInBackground()) {
// Otherwise,create an invisible 1x1 webview to load the landing
// page and detect if we're redirecting to a market url
out = new RedirectWebView(this.getContext());
out.loadUrl(url);
out.setVisibility(View.GONE);
adView.addView(out);
if (this.adView.getShowLoadingIndicator()) {
//Show a dialog Box
progressDialog = new ProgressDialog(this.getContextFromMutableContext());
progressDialog.setCancelable(true);
progressDialog.setonCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
out.stopLoading();
}
});
progressDialog.setMessage(getContext().getResources().getString(R.string.loading));
progressDialog.setProgressstyle(ProgressDialog.STYLE_SPINNER);
progressDialog.show();
}
} else {
// Stick the URL directly into the new activity.
out = new WebView(new MutableContextwrapper(getContext()));
WebviewUtil.setWebViewSettings(out);
out.loadUrl(url);
openInAppbrowser(out);
}
}catch (Exception e){
// Catches PackageManager$NameNotFoundException for webview
Clog.e(Clog.baseLogTag,Clog.getString(R.string.opening_native));
openNativeIntent(url);
triggerbrowserLaunchEvent();
}
}
项目:mobile-sdk-android
文件:AdWebView.java
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。