154 lines
5.6 KiB
Java
154 lines
5.6 KiB
Java
/*
|
|
* Copyright (C) 2015 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package com.android.messaging.datamodel.action;
|
|
|
|
import android.content.Context;
|
|
import android.database.Cursor;
|
|
import android.net.Uri;
|
|
import android.os.Parcel;
|
|
import android.os.Parcelable;
|
|
import android.provider.Telephony.Threads;
|
|
import android.provider.Telephony.ThreadsColumns;
|
|
|
|
import com.android.messaging.Factory;
|
|
import com.android.messaging.mmslib.SqliteWrapper;
|
|
import com.android.messaging.util.DebugUtils;
|
|
import com.android.messaging.util.LogUtil;
|
|
|
|
public class LogTelephonyDatabaseAction extends Action implements Parcelable {
|
|
// Because we use sanitizePII, we should also use BUGLE_TAG
|
|
private static final String TAG = LogUtil.BUGLE_TAG;
|
|
|
|
private static final String[] ALL_THREADS_PROJECTION = {
|
|
Threads._ID,
|
|
Threads.DATE,
|
|
Threads.MESSAGE_COUNT,
|
|
Threads.RECIPIENT_IDS,
|
|
Threads.SNIPPET,
|
|
Threads.SNIPPET_CHARSET,
|
|
Threads.READ,
|
|
Threads.ERROR,
|
|
Threads.HAS_ATTACHMENT };
|
|
|
|
// Constants from the Telephony Database
|
|
private static final int ID = 0;
|
|
private static final int DATE = 1;
|
|
private static final int MESSAGE_COUNT = 2;
|
|
private static final int RECIPIENT_IDS = 3;
|
|
private static final int SNIPPET = 4;
|
|
private static final int SNIPPET_CHAR_SET = 5;
|
|
private static final int READ = 6;
|
|
private static final int ERROR = 7;
|
|
private static final int HAS_ATTACHMENT = 8;
|
|
|
|
/**
|
|
* Log telephony data to logcat
|
|
*/
|
|
public static void dumpDatabase() {
|
|
final LogTelephonyDatabaseAction action = new LogTelephonyDatabaseAction();
|
|
action.start();
|
|
}
|
|
|
|
private LogTelephonyDatabaseAction() {
|
|
}
|
|
|
|
@Override
|
|
protected Object executeAction() {
|
|
final Context context = Factory.get().getApplicationContext();
|
|
|
|
if (!DebugUtils.isDebugEnabled()) {
|
|
LogUtil.e(TAG, "Can't log telephony database unless debugging is enabled");
|
|
return null;
|
|
}
|
|
|
|
if (!LogUtil.isLoggable(TAG, LogUtil.DEBUG)) {
|
|
LogUtil.w(TAG, "Can't log telephony database unless DEBUG is turned on for TAG: " +
|
|
TAG);
|
|
return null;
|
|
}
|
|
|
|
LogUtil.d(TAG, "\n");
|
|
LogUtil.d(TAG, "Dump of canoncial_addresses table");
|
|
LogUtil.d(TAG, "*********************************");
|
|
|
|
Cursor cursor = SqliteWrapper.query(context, context.getContentResolver(),
|
|
Uri.parse("content://mms-sms/canonical-addresses"), null, null, null, null);
|
|
|
|
if (cursor == null) {
|
|
LogUtil.w(TAG, "null Cursor in content://mms-sms/canonical-addresses");
|
|
} else {
|
|
try {
|
|
while (cursor.moveToNext()) {
|
|
long id = cursor.getLong(0);
|
|
String number = cursor.getString(1);
|
|
LogUtil.d(TAG, LogUtil.sanitizePII("id: " + id + " number: " + number));
|
|
}
|
|
} finally {
|
|
cursor.close();
|
|
}
|
|
}
|
|
|
|
LogUtil.d(TAG, "\n");
|
|
LogUtil.d(TAG, "Dump of threads table");
|
|
LogUtil.d(TAG, "*********************");
|
|
|
|
cursor = SqliteWrapper.query(context, context.getContentResolver(),
|
|
Threads.CONTENT_URI.buildUpon().appendQueryParameter("simple", "true").build(),
|
|
ALL_THREADS_PROJECTION, null, null, "date ASC");
|
|
try {
|
|
while (cursor.moveToNext()) {
|
|
LogUtil.d(TAG, LogUtil.sanitizePII("threadId: " + cursor.getLong(ID) +
|
|
" " + ThreadsColumns.DATE + " : " + cursor.getLong(DATE) +
|
|
" " + ThreadsColumns.MESSAGE_COUNT + " : " + cursor.getInt(MESSAGE_COUNT) +
|
|
" " + ThreadsColumns.SNIPPET + " : " + cursor.getString(SNIPPET) +
|
|
" " + ThreadsColumns.READ + " : " + cursor.getInt(READ) +
|
|
" " + ThreadsColumns.ERROR + " : " + cursor.getInt(ERROR) +
|
|
" " + ThreadsColumns.HAS_ATTACHMENT + " : " +
|
|
cursor.getInt(HAS_ATTACHMENT) +
|
|
" " + ThreadsColumns.RECIPIENT_IDS + " : " +
|
|
cursor.getString(RECIPIENT_IDS)));
|
|
}
|
|
} finally {
|
|
cursor.close();
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
private LogTelephonyDatabaseAction(final Parcel in) {
|
|
super(in);
|
|
}
|
|
|
|
public static final Parcelable.Creator<LogTelephonyDatabaseAction> CREATOR
|
|
= new Parcelable.Creator<LogTelephonyDatabaseAction>() {
|
|
@Override
|
|
public LogTelephonyDatabaseAction createFromParcel(final Parcel in) {
|
|
return new LogTelephonyDatabaseAction(in);
|
|
}
|
|
|
|
@Override
|
|
public LogTelephonyDatabaseAction[] newArray(final int size) {
|
|
return new LogTelephonyDatabaseAction[size];
|
|
}
|
|
};
|
|
|
|
@Override
|
|
public void writeToParcel(final Parcel parcel, final int flags) {
|
|
writeActionToParcel(parcel, flags);
|
|
}
|
|
}
|