Модераторы: javastic
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Install_Referrer, Как работает этот ресивер? 
:(
    Опции темы
Burka
Дата 11.11.2014, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: нет
Всего: 2



Привет, у меня такой вопрос: Я зарегестрировал ресивер через манифест

Код

<receiver android:name="com.my.company.InstallReciever" 
                android:exported="true">
             <intent-filter>
                    <action android:name="com.android.vending.INSTALL_REFERRER" />
             </intent-filter>
    </receiver>
  </application>


Должен ли я регестриовать этот ресивер при запуске приложения? registerReceiver
И еще вопрос как он создается? может ли быть создан вне приложения системой или нет

код ресивера выглядит так 
Код

package com.my.company;

import android.os.Bundle;
import android.content.*;
import android.util.Log;

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

import java.util.Map;
import java.util.HashMap;
import java.net.URLDecoder;

import java.io.UnsupportedEncodingException;

import android.content.SharedPreferences.Editor;
import android.content.SharedPreferences;

public class InstallReciever extends BroadcastReceiver {

    private static String TAG = "InstallReciever";
    public final static String PREFS_FILE_NAME = "ReferralParamsFile";
    private final static String[] EXPECTED_PARAMETERS = {
    "utm_source",
    "utm_medium",
    "utm_term",
    "utm_content",
    "utm_campaign"
};
    
    public void onReceive(Context context, Intent intent)
    {
        Log.i(TAG, "onReceive");
        // Workaround for Android security issue: http://code.google.com/p/android/issues/detail?id=16006
        try
        {
            final Bundle extras = intent.getExtras();
            if (extras != null) {
                extras.containsKey(null);
        }
        }
        catch (final Exception e) {
            return;
        }

        Map<String, String> referralParams = new HashMap<String, String>();

        // Return if this is not the right intent.
        if (! intent.getAction().equals("com.android.vending.INSTALL_REFERRER"))
            return;


        String referrer = intent.getStringExtra("referrer");
        if( referrer == null || referrer.length() == 0)
            return;


        try
        {    // Remove any url encoding
            referrer = URLDecoder.decode(referrer, "x-www-form-urlencoded");
        }
        catch (UnsupportedEncodingException e) { return; }

        // Parse the query string, extracting the relevant data
        String[] params = referrer.split("&");
        for (String param : params)
        {
            String[] pair = param.split("=");
            referralParams.put(pair[0], pair[1]);
        }

        InstallReciever.storeReferralParams(context, referralParams);
    }
    
    public static void storeReferralParams(Context context, Map<String, String> params)
    {
        SharedPreferences storage = context.getSharedPreferences(InstallReciever.PREFS_FILE_NAME, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = storage.edit();
        try
        {
            JSONObject jsonObj = new JSONObject("{}");
        
            for(String key : InstallReciever.EXPECTED_PARAMETERS)
            {
                String value = params.get(key);
                if(value != null)
                {
                    jsonObj.put(key, value);
                    //editor.putString(key, value);
                }
            }
        
            editor.putString("data", jsonObj.toString());
            //editor.putBoolean("callback", false);
            editor.commit();
            Log.i(TAG, "Writed data: " + jsonObj.toString());
        }
        catch(JSONException e)
        {
            Log.i(TAG, "onRecieve Error");
            e.printStackTrace();
        }        
    }
}


пытаюсь тестировать через adb, но в логе сообщений не появляется. 

Это сообщение отредактировал(а) Burka - 11.11.2014, 18:07


--------------------
Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Android | Следующая тема »


 




[ Время генерации скрипта: 0.0759 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.