Turkcell | Geleceği Yazanlar

Soru & Cevap

Push Notification

24.07.2015 - 15:46

Push bildirimi ile gelen url'i Receiver sayfasından MainActivity sayfasına yönlendirip ve bu sayfada url'in webview içinde açılmasını istiyorum.

Fakat şu anki yapmış olduğum projede Receiver sayfasında tarayıcıya yönlendirerek açılıyor.Yardımcı olursanız sevinirim.

Push ile gönderdiğim JSON verisi:

{
  "alert": "Push bildirimi",
  "badge": "Increment",
  "uri": "http://www.google.com.tr"
}

 Receiver.java

import android.app.Activity;
import android.app.TaskStackBuilder;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.util.Log;

import com.parse.ParseAnalytics;
import com.parse.ParsePushBroadcastReceiver;

import org.json.JSONException;
import org.json.JSONObject;

public class Receiver extends ParsePushBroadcastReceiver {


  // public MainActivity anasayfa;


    /*public Receiver(WebView webview) {
        this.webview = webview;
    }*/

    @Override
    protected void onPushOpen(Context context, Intent intent) {
        super.onPushOpen(context, intent);
        ParseAnalytics.trackAppOpenedInBackground(intent);
        // Anlik Bildirim acildiginda MainActivity'imizi baslatiyoruz.

        Log.d("msg_info", "onPushOpen");
        String uriString = null;
        try {
            Log.d("msg_info", "icerdeyim");

            JSONObject pushData = new JSONObject(intent.getStringExtra("com.parse.Data"));
            uriString = pushData.optString("uri");
        } catch (JSONException e) {
            Log.v("com.parse.ParsePushReceiver", "Unexpected JSONException when receiving push data: ", e);
        }
        Class<? extends Activity> cls = getActivity(context, intent);
        Intent activityIntent;
        if (uriString != null && !uriString.isEmpty()) {
            activityIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(uriString));
        } else {
            activityIntent = new Intent(context, MainActivity.class);
        }
        activityIntent.putExtras(intent.getExtras());
        if (Build.VERSION.SDK_INT >= 22) {
            TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
            stackBuilder.addParentStack(cls);
            stackBuilder.addNextIntent(activityIntent);
            stackBuilder.startActivities();
        } else {
            activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            activityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            context.startActivity(activityIntent);
        }
    }
}



MainActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import com.computer.bildirimler.R;

/*import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;*/

public class MainActivity extends Activity {

    public WebView webView;
    private String uri;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webView=(WebView)findViewById(R.id.webview);
        webView.setWebViewClient(new WebViewClient());
        //webView.getSettings().setJavaScriptEnabled(true);
        Log.d("msg_info", "haber yükleniyor");
        webView.loadUrl(uri);
 }
}

 

3934 Görüntülenme

1 Cevap

Yasin Yildirim
25.07.2015 - 18:43

if (uriString != null && !uriString.isEmpty()) {
    activityIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(uriString));
} else {
    activityIntent = new Intent(context, MainActivity.class);
}

Sorun burada:

urlString null degilse ve dolu bir String ise Intent.ACTION_VIEW ile bir Intent olusturuyorsunuz, bu da Intent'in dogrudan isletim sistemi tarafindan yakalanmasini sagliyor.

O kismi su sekilde degistirirseniz sizin MainActivity'niz acilacaktir.

if (uriString != null && !uriString.isEmpty()) {
    activityIntent = new Intent(context, MainActivity.class);
    activityIntent.putExtra("URI_STRING", uriString);
} else {
    activityIntent = new Intent(context, MainActivity.class);
}

 

MainActivity acildiginda da bu uriString'i intent'ten elde etmeniz gerekiyor tabii. O da su sekilde:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Hata kontrolu
    if (getIntent().getExtras() != null && getIntent().getExtras().getString("URI_STRING") != null) {
        uri = getIntent().getExtras().getString("URI_STRING");

        webView=(WebView)findViewById(R.id.webview);
        webView.setWebViewClient(new WebViewClient());
        //webView.getSettings().setJavaScriptEnabled(true);
        Log.d("msg_info", "haber yükleniyor");
        webView.loadUrl(uri);
    } else {
    // URI null, hata mesaji goster.
    }
}

 

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Batuhan
27.07.2015 - 09:34
Tam olarak istediğim bu idi. Teşekkür ederim.

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.