Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 71592446 authored by Geremy Condra's avatar Geremy Condra Committed by Android (Google) Code Review
Browse files

Merge "Add event logging for SMS" into jb-mr1-dev

parents f022afff 2029d86b
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -71,3 +71,7 @@ option java_package com.android.internal.telephony;

# Data Stall Recovery mode DATA_STALL_RECOVERY_RADIO_RESTART_WITH_PROP
50122 data_stall_recovery_radio_restart_with_prop (out_packet_count|1|1)

# SMS denied by user
50125 sms_denied_by_user (app_signature|3)
50128 sms_sent_by_user (app_signature|3)
+32 −8
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.database.Cursor;
@@ -47,10 +48,12 @@ import android.telephony.SmsMessage;
import android.telephony.TelephonyManager;
import android.text.Html;
import android.text.Spanned;
import android.util.EventLog;
import android.util.Log;
import android.view.WindowManager;

import com.android.internal.R;
import com.android.internal.telephony.EventLogTags;
import com.android.internal.telephony.GsmAlphabet.TextEncodingDetails;
import com.android.internal.telephony.SmsConstants;
import com.android.internal.util.HexDump;
@@ -930,11 +933,26 @@ public abstract class SMSDispatcher extends Handler {
            return;
        }

        String appPackage = packageNames[0];
        // Get package info via packagemanager
        PackageInfo appInfo = null;
        try {
            // XXX this is lossy- apps can share a UID
            appInfo = pm.getPackageInfo(packageNames[0], PackageManager.GET_SIGNATURES);
        } catch (PackageManager.NameNotFoundException e) {
            Log.e(TAG, "Can't get calling app package info: refusing to send SMS");
            if (sentIntent != null) {
                try {
                    sentIntent.send(RESULT_ERROR_GENERIC_FAILURE);
                } catch (CanceledException ex) {
                    Log.e(TAG, "failed to send error result");
                }
            }
            return;
        }

        // Strip non-digits from destination phone number before checking for short codes
        // and before displaying the number to the user if confirmation is required.
        SmsTracker tracker = new SmsTracker(map, sentIntent, deliveryIntent, appPackage,
        SmsTracker tracker = new SmsTracker(map, sentIntent, deliveryIntent, appInfo,
                PhoneNumberUtils.extractNetworkPortion(destAddr));

        // checkDestination() returns true if the destination is not a premium short code or the
@@ -942,7 +960,7 @@ public abstract class SMSDispatcher extends Handler {
        // handler with the SmsTracker to request user confirmation before sending.
        if (checkDestination(tracker)) {
            // check for excessive outgoing SMS usage by this app
            if (!mUsageMonitor.check(appPackage, SINGLE_PART_SMS)) {
            if (!mUsageMonitor.check(appInfo.packageName, SINGLE_PART_SMS)) {
                sendMessage(obtainMessage(EVENT_SEND_LIMIT_REACHED_CONFIRMATION, tracker));
                return;
            }
@@ -1040,7 +1058,7 @@ public abstract class SMSDispatcher extends Handler {
            return;     // queue limit reached; error was returned to caller
        }

        CharSequence appLabel = getAppLabel(tracker.mAppPackage);
        CharSequence appLabel = getAppLabel(tracker.mAppInfo.packageName);
        Resources r = Resources.getSystem();
        Spanned messageText = Html.fromHtml(r.getString(R.string.sms_control_message, appLabel));

@@ -1079,7 +1097,7 @@ public abstract class SMSDispatcher extends Handler {
            titleId = R.string.sms_short_code_confirm_title;
        }

        CharSequence appLabel = getAppLabel(tracker.mAppPackage);
        CharSequence appLabel = getAppLabel(tracker.mAppInfo.packageName);
        Resources r = Resources.getSystem();
        Spanned messageText = Html.fromHtml(r.getString(messageId, appLabel, tracker.mDestAddress));

@@ -1184,16 +1202,16 @@ public abstract class SMSDispatcher extends Handler {
        public final PendingIntent mSentIntent;
        public final PendingIntent mDeliveryIntent;

        public final String mAppPackage;
        public final PackageInfo mAppInfo;
        public final String mDestAddress;

        public SmsTracker(HashMap<String, Object> data, PendingIntent sentIntent,
                PendingIntent deliveryIntent, String appPackage, String destAddr) {
                PendingIntent deliveryIntent, PackageInfo appInfo, String destAddr) {
            mData = data;
            mSentIntent = sentIntent;
            mDeliveryIntent = deliveryIntent;
            mRetryCount = 0;
            mAppPackage = appPackage;
            mAppInfo = appInfo;
            mDestAddress = destAddr;
        }

@@ -1223,9 +1241,15 @@ public abstract class SMSDispatcher extends Handler {
        public void onClick(DialogInterface dialog, int which) {
            if (which == DialogInterface.BUTTON_POSITIVE) {
                Log.d(TAG, "CONFIRM sending SMS");
                // XXX this is lossy- apps can have more than one signature
                EventLog.writeEvent(EventLogTags.SMS_SENT_BY_USER,
                                    mTracker.mAppInfo.signatures[0].toCharsString());
                sendMessage(obtainMessage(EVENT_SEND_CONFIRMED_SMS, mTracker));
            } else if (which == DialogInterface.BUTTON_NEGATIVE) {
                Log.d(TAG, "DENY sending SMS");
                // XXX this is lossy- apps can have more than one signature
                EventLog.writeEvent(EventLogTags.SMS_DENIED_BY_USER,
                                    mTracker.mAppInfo.signatures[0].toCharsString());
                sendMessage(obtainMessage(EVENT_STOP_SENDING, mTracker));
            }
        }