diff options
| -rw-r--r-- | services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java b/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java index 29aedcea0cd2..1208eccc69eb 100644 --- a/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java +++ b/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java @@ -30,6 +30,8 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.os.UpdateEngine; import android.os.UpdateEngineCallback; +import android.os.UserHandle; +import android.os.UserManager; import android.provider.DeviceConfig; import android.util.Log; @@ -301,10 +303,18 @@ public final class ProfcollectForwardingService extends SystemService { new Thread(() -> { try { - String reportPath = mIProfcollect.report(); + String reportUuid = mIProfcollect.report(); + if (!uploadReport) { return; } + + final int profileId = getBBProfileId(); + mIProfcollect.copy_report_to_bb(profileId, reportUuid); + String reportPath = + "/data/user/" + profileId + + "/com.google.android.apps.internal.betterbug/cache/" + + reportUuid + ".zip"; Intent uploadIntent = new Intent("com.google.android.apps.betterbug.intent.action.UPLOAD_PROFILE") .setPackage("com.google.android.apps.internal.betterbug") @@ -316,9 +326,27 @@ public final class ProfcollectForwardingService extends SystemService { if (context.getPackageManager().queryBroadcastReceivers(uploadIntent, 0) != null) { context.sendBroadcast(uploadIntent); } + mIProfcollect.delete_report(reportUuid); } catch (RemoteException e) { Log.e(LOG_TAG, e.getMessage()); } }).start(); } + + /** + * Get BetterBug's profile ID. It is the work profile ID, if it exists. Otherwise the system + * user ID. + * + * @return BetterBug's profile ID. + */ + private int getBBProfileId() { + UserManager userManager = UserManager.get(getContext()); + int[] profiles = userManager.getProfileIds(UserHandle.USER_SYSTEM, false); + for (int p : profiles) { + if (userManager.getUserInfo(p).isManagedProfile()) { + return p; + } + } + return UserHandle.USER_SYSTEM; + } } |