Я реализовал браузер в приложении в действии ViewInWeb
. Я использую это activity
, чтобы открывать новости внутри приложения. Я также использую эту активность для открытия push-уведомлений, содержащих ссылки. Но возникает следующая проблема:Отображение содержимого уведомлений из предыдущего уведомления, когда приложение идет в фоновом режиме
открыть ссылку из приложения в
ViewInWeb
жму кнопку домой, чтобы приложение идет в фоновом режиме
я получаю уведомление, содержащее ссылку ,
Когда я открываю уведомление, он не отображает содержимое этого уведомления, но отображает содержимое, которое было до того, как я нажал кнопку «Главная».
Когда я открываю уведомление, я использую следующий код:
Intent resultIntent;
PendingIntent resultPendingIntent = null;
resultIntent =new Intent(this, ViewInWeb.class);
Bundle basket = new Bundle();
basket.putString(TimeUtils.TAG_LINK,link);
basket.putString(TimeUtils.TAG_TITLE,title);
basket.putInt("TYPE", 1);
resultIntent.putExtras(basket);
resultPendingIntent = PendingIntent.getActivity(this, Integer.parseInt(nr),
resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Код для ViewInWeb
, как показано ниже:
public class ViewInWeb extends AppCompatActivity {
private WebView webView;
ProgressBar progressBar;
private String link, title;
private String url_link, url_title;
private int count = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_in_web);
webView = (WebView) findViewById(R.id.browser_web_view);
// enable back button
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_black);
getSupportActionBar().setElevation(0);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
.
.
//code for Google Analytics tracking
.
}
count++;
}
});
//get the data
Bundle basket_category = getIntent().getExtras();
link = basket_category.getString(TimeUtils.TAG_LINK);
title = basket_category.getString(TimeUtils.TAG_TITLE);
int type = basket_category.getInt("TYPE");
if(type==1){
.
.
//code for Google Analytics tracking
.
}
url_link = link;
url_title = title;
//put the data
getSupportActionBar().setTitle(title);
webView.loadUrl(link);
// create new ProgressBar and style it
final ProgressBar progressBar = new ProgressBar(this, null, android.R.attr.progressBarStyleHorizontal);
progressBar.setLayoutParams(new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, 25));
// retrieve the top view of our application
final FrameLayout decorView = (FrameLayout) getWindow().getDecorView();
decorView.addView(progressBar);
ViewTreeObserver observer = progressBar.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
View contentView = decorView.findViewById(android.R.id.content);
//progressBar.offsetTopAndBottom(contentView.getBottom()-10);
float x = contentView.getBottom();
int result = 0;
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
result = getResources().getDimensionPixelSize(resourceId);
}
Log.e("aggbfaevfsa", String.valueOf(x));
progressBar.setY(contentView.getY() + result - 10);
// progressBar.setX(0);
ViewTreeObserver observer = progressBar.getViewTreeObserver();
observer.removeGlobalOnLayoutListener(this);
}
});
webView.setWebChromeClient(new WebChromeClient() {
// page loading progress, gone when fully loaded
public void onProgressChanged(WebView view, int progress) {
if (progress < 100 && progressBar.getVisibility() == ProgressBar.GONE) {
progressBar.setVisibility(ProgressBar.VISIBLE);
}
progressBar.setProgress(progress);
if (progress == 100) {
progressBar.setVisibility(ProgressBar.GONE);
}
}
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
if (!TextUtils.isEmpty(title)) {
getSupportActionBar().setTitle(title);
url_link = view.getUrl();
url_title = title;
}
}
});
// set the animation when opening the activity
overridePendingTransition(R.anim.activity_open_translate,
R.anim.activity_close_scale);
}
// set the animation when closing the activity
@Override
protected void onPause() {
super.onPause();
// closing transition animations
overridePendingTransition(R.anim.activity_open_scale,
R.anim.activity_close_translate);
}
}
Та же проблема происходит, когда два уведомления приходят приложение. После того, как я открыл первый, я нажимаю кнопку «домой». Когда я нажимаю второй, он отображает содержимое первого.
Любая идея, как решить проблему.
вы использовали метод getIntent и получить ссылку сформировать намерение и попытаться использовать OnPause и onResume methods- опубликовать полный исходный код ViewinWeb –