La nostra app sta ottenendo diversi report SecurityException
dal nostro software di report degli arresti anomali. Ecco una stacktrace del crash: (? È questa discussione id o qualcosa del genere)SecurityException: Parcel.readException proveniente dal codice google analytics
java.lang.SecurityException: Unable to find app for caller [email protected] (pid=17925) when registering receiver [email protected]
at android.os.Parcel.readException(Parcel.java:1431)
at android.os.Parcel.readException(Parcel.java:1385)
at android.app.ActivityManagerProxy.registerReceiver(ActivityManagerNative.java:2466)
at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1717)
at android.app.ContextImpl.registerReceiver(ContextImpl.java:1685)
at android.app.ContextImpl.registerReceiver(ContextImpl.java:1679)
at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:453)
at com.google.android.gms.analytics.q.v(Unknown Source)
at com.google.android.gms.analytics.r.cF(Unknown Source)
at com.google.android.gms.analytics.r.cH(Unknown Source)
at com.google.android.gms.analytics.s.cO(Unknown Source)
at com.google.android.gms.analytics.s.cP(Unknown Source)
at com.google.android.gms.analytics.s.d(Unknown Source)
at com.google.android.gms.analytics.s$e.run(Unknown Source)
at java.util.Timer$TimerImpl.run(Timer.java:284)
Lo stack trace è sempre lo stesso, tranne l'unica cosa che sembra cambiare è [email protected] (pid=9103)
e [email protected]
hanno numeri diversi su di loro
Ora questa eccezione sembra essere legato alla dimensione intenti (consultare i seguenti link)
È questo l'unica causa? In tal caso, qual è il motivo che sta provocando il mio codice quando sembra provenire solo dal codice google analytics
? Sto usando GA errato? Non sembra che stia facendo molto oltre a fare un tracker.
EDIT
Questo è come mi sto creando il mio inseguitore. Ho un tracker singleton
nel mio oggetto applicazione
Tracker appTracker;
synchronized Tracker getTracker()
{
GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
if (appTracker == null)
{
appTracker = analytics.newTracker([some key]);
appTracker.enableAdvertisingIdCollection(true);
analytics.getLogger().setLogLevel(Logger.LogLevel.VERBOSE);
}
return appTracker;
}
Poi nel mio BaseActivity Ho il seguente codice:
public void initAnalytics() {
if (Global.TRACKING_ENABLED) {
mTracker = app.getTracker();
}
}
public void sendCommerceData(Map<String, String> params)
{
mTracker.send(params);
}
public void sendTrackViewData(String _path)
{
mTracker.setScreenName(_path);
mTracker.send(new HitBuilders.AppViewBuilder().build());
}
public void sendEventData(String category, String action, String label, long value)
{
mTracker.send(new HitBuilders.EventBuilder()
.setCategory(category)
.setAction(action)
.setLabel(label)
.setValue(value).build());
}
EDIT 2
ok qui è l'uso di sendCommerceData :
sendCommerceData(new HitBuilders.ItemBuilder()
.setTransactionId(Integer.toString(order.orderId))
.setName(orderItem.tradeTitle)
.setSku(orderItem.tradeId)
.setCategory(orderItem.categoryFullname)
.setPrice(price)
.setQuantity(orderItem.quantity)
.build());
u_u
Come stai creando il Tracker/invio di colpi a GA? –
@zaventh vedere la mia domanda modificata per il modo in cui invio i risultati. Non sono incredibilmente felice con il codice, ma dovrebbe funzionare ... –
'sendCommerceData' sembra sospetto. Sei sicuro di voler costruire correttamente 'Map' per inviare un hit valido? C'è qualche possibilità che tu stia memorizzando "stringhe" straordinariamente lunghe in questa "mappa" personalizzata? –