diff --git a/Branch-SDK/src/io/branch/referral/SystemObserver.java b/Branch-SDK/src/io/branch/referral/SystemObserver.java
index <HASH>..<HASH> 100644
--- a/Branch-SDK/src/io/branch/referral/SystemObserver.java
+++ b/Branch-SDK/src/io/branch/referral/SystemObserver.java
@@ -227,7 +227,8 @@ public class SystemObserver {
 				if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 1) {
 					JSONObject packObj = new JSONObject();
 					try {
-						String label = appInfo.loadLabel(pm).toString();
+						CharSequence labelCs = appInfo.loadLabel(pm);
+						String label = labelCs == null ? null : labelCs.toString();
 						if (label != null)
 							packObj.put("name", label);
 						String packName = appInfo.packageName;
A charsequence.toString() is never null

Modified this code so it still reflects the old test. However,
appInfo.loadLabel(pm) will (currently) not be able to return a null
value, as the name or packagename is returned if the label is null. That
said, a manufacturer could break this function.

Charsequence#toString on a null value raises a NullPointerException