老套路看下效果图:
上面是穿山甲的广告页面,需求是添加自定义布局到别人SDK的页面,SDK内部不支持这样方式。怎么办呢?
思路:实际上我们可以换位思考下,如果能拿到这个广告页的activity页面,在这个拿到的activity页面添加自定义布局不就好了。
看下如何获取当前activty:下面这个方法要在application中初始化
/**
* 监听Activity变化
*/
private void initActivityLifecycleCallbacks() {
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
//每次都添加activity到栈中
ActivityManager.getInstance().addActivity(activity);
Log.i("wsc", String.format("ActivityLifecycleCallbacks ---- onActivityCreated %s", activity.getLocalClassName()));
}
@Override
public void onActivityStarted(Activity activity) {
if (activityCount == 0) {
ActivityManager.getInstance().setAppInBackGround(false);
Log.i("wsc", String.format("ActivityLifecycleCallbacks ---- onActivityStarted 回到前台 %s ", activity.getLocalClassName()));
AppRecordUtils.getInstance().startRecord();
}
activityCount++;
Log.i("wsc", String.format("ActivityLifecycleCallbacks ---- onActivityStarted %s ", activity.getLocalClassName()));
}
@Override
public void onActivityResumed(Activity activity) {
Log.i("wsc", String.format("ActivityLifecycleCallbacks ---- onActivityResumed %s ", activity.getLocalClassName()));
}
@Override
public void onActivityPaused(Activity activity) {
Log.i("wsc", String.format("ActivityLifecycleCallbacks ---- onActivityPaused %s ", activity.getLocalClassName()));
}
@Override
public void onActivityStopped(Activity activity) {
activityCount--;
if (activityCount == 0) {
ActivityManager.getInstance().setAppInBackGround(true);
Log.i("wsc", String.format("ActivityLifecycleCallbacks ---- onActivityStopp