Unsere App erhält einige verschiedene SecurityException
Berichte aus unserer Crash-Report-Software. Hier ist ein Stacktrace des Absturzes: (? Ist dieser Thread-IDs oder etwas)SecurityException: Parcel.readException kommt von Google Analytics-Code
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)
Der Stack-Trace ist immer das gleiche, nur das einzige, was zu ändern scheint, [email protected] (pid=9103)
und [email protected]
haben unterschiedliche Zahlen auf ihnen
Nun scheint diese Ausnahme auf Vorsatz Größe verknüpft werden (siehe die folgenden Links)
Ist das der einzige Grund? Wenn ja, wie verursacht mein Code dies, wenn es nur von google analytics
Code zu kommen scheint? Benutze ich GA falsch? Ich mache nicht viel mehr als einen Tracker zu machen.
EDIT
Dies ist, wie ich meine tracker erschaffe. Ich habe einen singleton
Tracker in meinem Anwendungsobjekt
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;
}
Da ist in meinem BaseActivity Ich habe den folgenden Code:
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 hier ist die Verwendung von 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
Wie werden Sie die Erstellung der Tracker/Senden Hits nach GA? –
@zzenthed meine bearbeitete Frage für die Art, wie ich die Hits sende. Ich bin nicht unglaublich glücklich mit dem Code, aber es sollte funktionieren ... –
'sendCommerceData' sieht verdächtig aus. Sind Sie sicher, dass Sie die 'Map' korrekt erstellen, um einen gültigen Treffer zu senden? Gibt es eine Chance, dass du außergewöhnlich lange "Strings" in dieser benutzerdefinierten "Map" speicherst? –