이윤영

Add other extract function

......@@ -4,8 +4,10 @@
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<compositeConfiguration>
<compositeBuild compositeDefinitionSource="SCRIPT" />
</compositeConfiguration>
<option name="delegatedBuild" value="false" />
<option name="testRunner" value="PLATFORM" />
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="modules">
......@@ -15,6 +17,7 @@
</set>
</option>
<option name="resolveModulePerSourceSet" value="false" />
<option name="testRunner" value="PLATFORM" />
</GradleProjectSettings>
</option>
</component>
......
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
</component>
</project>
\ No newline at end of file
......@@ -5,8 +5,8 @@ android {
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.example.dataextraction"
minSdkVersion 28
targetSdkVersion 29
minSdkVersion 23
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
......
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.dataextraction">
<uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
<application
android:allowBackup="true"
......
......@@ -5,6 +5,7 @@ import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import androidx.annotation.Nullable;
......@@ -27,6 +28,13 @@ public class DBHelper {
db.execSQL(VideoDataBase.CreateDB._CREATE0);
db.execSQL(AudioDataBase.CreateDB._CREATE0);
db.execSQL(CalendarDataBase.CreateDB._CREATE0);
db.execSQL(Databases.CreateDB_App._CREATE_AppInfo);
db.execSQL(Databases.CreateDB_AccountInfo._CREATE_AccountInfo);
db.execSQL(Databases.CreateDB_AppUsage_YEAR._CREATE_AppUsage_YEAR);
db.execSQL(Databases.CreateDB_AppUsage_MONTH._CREATE_AppUsage_MONTH);
db.execSQL(Databases.CreateDB_AppUsage_WEEK._CREATE_AppUsage_WEEK);
db.execSQL(Databases.CreateDB_AppUsage_DAY._CREATE_AppUsage_DAY);
db.execSQL(Databases.CreateDB_PhoneInfo._CREATE_PhoneInfo);
}
@Override
......@@ -35,6 +43,14 @@ public class DBHelper {
db.execSQL("DROP TABLE IF EXISTS " + VideoDataBase.CreateDB._TABLENAME0);
db.execSQL("DROP TABLE IF EXISTS " + AudioDataBase.CreateDB._TABLENAME0);
db.execSQL("DROP TABLE IF EXISTS " + CalendarDataBase.CreateDB._TABLENAME0);
db.execSQL("DROP TABLE IF EXISTS " + Databases.CreateDB_App.TABLE_NAME);
db.execSQL("DROP TABLE IF EXISTS " + Databases.CreateDB_AccountInfo.TABLE_NAME);
db.execSQL("DROP TABLE IF EXISTS " + Databases.CreateDB_AppUsage_YEAR.TABLE_NAME);
db.execSQL("DROP TABLE IF EXISTS " + Databases.CreateDB_AppUsage_MONTH.TABLE_NAME);
db.execSQL("DROP TABLE IF EXISTS " + Databases.CreateDB_AppUsage_WEEK.TABLE_NAME);
db.execSQL("DROP TABLE IF EXISTS " + Databases.CreateDB_AppUsage_DAY.TABLE_NAME);
db.execSQL("DROP TABLE IF EXISTS " + Databases.CreateDB_PhoneInfo.TABLE_NAME);
onCreate(db);
}
}
......@@ -122,4 +138,113 @@ public class DBHelper {
values.put(CalendarDataBase.CreateDB.RDATE, r_date);
return mDB.insert(CalendarDataBase.CreateDB._TABLENAME0, null, values);
}
//Package 정보에 Network 사용량 추가
public void addAppInfo(String packageName, String versionName, String applicationName
, long firstInstallTime, long lastUpdateTime, long wifibytes, long cellularbytes) {
SQLiteDatabase db = mDBHelper.getWritableDatabase();
String wifi = String.valueOf(wifibytes);
String cellular = String.valueOf(cellularbytes);
ContentValues values = new ContentValues();
values.put(Databases.CreateDB_App.PACKAGENAME, packageName);
values.put(Databases.CreateDB_App.VERSION, versionName);
values.put(Databases.CreateDB_App.NAME, applicationName);
values.put(Databases.CreateDB_App.FIRSTINSTALL, firstInstallTime);
values.put(Databases.CreateDB_App.LASTUPDATE, lastUpdateTime);
values.put(Databases.CreateDB_App.WIFIUSAGE, wifibytes);
values.put(Databases.CreateDB_App.CELLULARUSAGE, cellularbytes);
db.insert(Databases.CreateDB_App.TABLE_NAME, null, values);
Log.d("LogTest","addAppUsage");
Log.d("LogTest", String.valueOf(cellularbytes));
}
public void addAccountInfo(String accountname, String accounttype) {
SQLiteDatabase db = mDBHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(Databases.CreateDB_AccountInfo.ACCOUNTNAME, accountname);
values.put(Databases.CreateDB_AccountInfo.ACCOUNTTYPE, accounttype);
db.insert(Databases.CreateDB_AccountInfo.TABLE_NAME, null, values);
Log.d("LogTest","addAccountInfo");
}
public void addAppUsage_YEAR(String packageName, long firsttimestamp, long lasttimestamp,
long lasttimeused, long totaltimeforeground) {
SQLiteDatabase db = mDBHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(Databases.CreateDB_AppUsage_YEAR.PACKAGENAME, packageName);
values.put(Databases.CreateDB_AppUsage_YEAR.FIRSTTIMESTAMP, firsttimestamp);
values.put(Databases.CreateDB_AppUsage_YEAR.LASTIMESTAMP, lasttimestamp);
values.put(Databases.CreateDB_AppUsage_YEAR.LASTTIMEUSED, lasttimeused);
values.put(Databases.CreateDB_AppUsage_YEAR.TOTALTIMEFOREGROUND, totaltimeforeground);
db.insert(Databases.CreateDB_AppUsage_YEAR.TABLE_NAME, null, values);
Log.d("LogTest","addAppUsageYear");
}
public void addAppUsage_MONTH(String packageName, long firsttimestamp, long lasttimestamp,
long lasttimeused, long totaltimeforeground) {
SQLiteDatabase db = mDBHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(Databases.CreateDB_AppUsage_MONTH.PACKAGENAME, packageName);
values.put(Databases.CreateDB_AppUsage_MONTH.FIRSTTIMESTAMP, firsttimestamp);
values.put(Databases.CreateDB_AppUsage_MONTH.LASTIMESTAMP, lasttimestamp);
values.put(Databases.CreateDB_AppUsage_MONTH.LASTTIMEUSED, lasttimeused);
values.put(Databases.CreateDB_AppUsage_MONTH.TOTALTIMEFOREGROUND, totaltimeforeground);
db.insert(Databases.CreateDB_AppUsage_MONTH.TABLE_NAME, null, values);
Log.d("LogTest","addAppUsageMonth");
}
public void addAppUsage_WEEK(String packageName, long firsttimestamp, long lasttimestamp,
long lasttimeused, long totaltimeforeground) {
SQLiteDatabase db = mDBHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(Databases.CreateDB_AppUsage_WEEK.PACKAGENAME, packageName);
values.put(Databases.CreateDB_AppUsage_WEEK.FIRSTTIMESTAMP, firsttimestamp);
values.put(Databases.CreateDB_AppUsage_WEEK.LASTIMESTAMP, lasttimestamp);
values.put(Databases.CreateDB_AppUsage_WEEK.LASTTIMEUSED, lasttimeused);
values.put(Databases.CreateDB_AppUsage_WEEK.TOTALTIMEFOREGROUND, totaltimeforeground);
db.insert(Databases.CreateDB_AppUsage_WEEK.TABLE_NAME, null, values);
Log.d("LogTest","addAppUsageWeek");
}
public void addAppUsage_DAY(String packageName, long firsttimestamp, long lasttimestamp,
long lasttimeused, long totaltimeforeground) {
SQLiteDatabase db = mDBHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(Databases.CreateDB_AppUsage_DAY.PACKAGENAME, packageName);
values.put(Databases.CreateDB_AppUsage_DAY.FIRSTTIMESTAMP, firsttimestamp);
values.put(Databases.CreateDB_AppUsage_DAY.LASTIMESTAMP, lasttimestamp);
values.put(Databases.CreateDB_AppUsage_DAY.LASTTIMEUSED, lasttimeused);
values.put(Databases.CreateDB_AppUsage_DAY.TOTALTIMEFOREGROUND, totaltimeforeground);
db.insert(Databases.CreateDB_AppUsage_DAY.TABLE_NAME, null, values);
Log.d("LogTest","addAppUsageDay");
}
public void addPhoneInfo(int phonetype, String softwarenumber, String phonenumber, String subscriberid,
String adid, int callstate, int datastate,
int networktype, String networkcountryiso, String simcountryiso,
String networkoperater, String simoperator, String networkoperatorname,
String simoperatorname, String simserialnumber, int simstate,
boolean isnetworkroming) {
SQLiteDatabase db = mDBHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(Databases.CreateDB_PhoneInfo.PHONETYPE, phonetype);
values.put(Databases.CreateDB_PhoneInfo.SOFTWARENUMBER, softwarenumber);
values.put(Databases.CreateDB_PhoneInfo.PHONENUMBER, phonenumber);
values.put(Databases.CreateDB_PhoneInfo.SUBSCRIBERID, subscriberid);
values.put(Databases.CreateDB_PhoneInfo.ADID, adid);
values.put(Databases.CreateDB_PhoneInfo.CALLSTATE, callstate);
values.put(Databases.CreateDB_PhoneInfo.DATASTATE, datastate);
values.put(Databases.CreateDB_PhoneInfo.NETWORKTYPE, networktype);
values.put(Databases.CreateDB_PhoneInfo.NETWORKCOUNTRYISO, networkcountryiso);
values.put(Databases.CreateDB_PhoneInfo.SIMCOUNTRYISO, simcountryiso);
values.put(Databases.CreateDB_PhoneInfo.NETWORKOPERATER, networkoperater);
values.put(Databases.CreateDB_PhoneInfo.SIMOPERATOR, simoperator);
values.put(Databases.CreateDB_PhoneInfo.NETWORKOPERATORNAME, networkoperatorname);
values.put(Databases.CreateDB_PhoneInfo.SIMOPERATORNAME, simoperatorname);
values.put(Databases.CreateDB_PhoneInfo.SIMSERIALNUMBER, simserialnumber);
values.put(Databases.CreateDB_PhoneInfo.SIMSTATE, simstate);
values.put(Databases.CreateDB_PhoneInfo.ISNETWORKROMING, isnetworkroming);
db.insert(Databases.CreateDB_PhoneInfo.TABLE_NAME, null, values);
Log.d("LogTest","addPhoneInfo");
}
}
......
package com.example.dataextraction;
import android.provider.BaseColumns;
import java.lang.reflect.Field;
//데이터베이스 클래스
public final class Databases {
private Databases() {}
public static final class CreateDB_App implements BaseColumns {
public static final String TABLE_NAME = "AppInfo";
public static final String PACKAGENAME = "packagename";
public static final String VERSION = "version";
public static final String NAME = "name";
public static final String FIRSTINSTALL = "firstinstall";
public static final String LASTUPDATE = "lastupdate";
public static final String WIFIUSAGE = "wifiusage";
public static final String CELLULARUSAGE = "cellularusage";
public static final String USAGETIME = "usagetime";
public static final String _CREATE_AppInfo = "create table if not exists "+TABLE_NAME+"("
+PACKAGENAME+" text not null primary key, "
+VERSION+" text not null , "
+NAME+" text not null , "
+FIRSTINSTALL+" timestamp not null , "
+LASTUPDATE+" timestamp not null , "
+WIFIUSAGE+" bigint not null , "
+CELLULARUSAGE+" bigint not null);";
}
public static final class CreateDB_AppUsage_YEAR implements BaseColumns {
public static final String TABLE_NAME = "AppUsageYear";
public static final String PACKAGENAME = "packagename";
public static final String FIRSTTIMESTAMP = "firsttimestamp";
public static final String LASTIMESTAMP = "lasttimestamp";
public static final String LASTTIMEUSED = "lasttimeused";
public static final String TOTALTIMEFOREGROUND = "totaltimeforeground";
public static final String _CREATE_AppUsage_YEAR = "create table if not exists "+TABLE_NAME+"("
+PACKAGENAME+" text not null , "
+FIRSTTIMESTAMP+" timestamp not null , "
+LASTIMESTAMP+" timestamp not null , "
+LASTTIMEUSED+" timestamp not null , "
+TOTALTIMEFOREGROUND+" bigint not null default 0, primary key(" +PACKAGENAME +"," + FIRSTTIMESTAMP+ "));";
}
public static final class CreateDB_AppUsage_MONTH implements BaseColumns {
public static final String TABLE_NAME = "AppUsageMonth";
public static final String PACKAGENAME = "packagename";
public static final String FIRSTTIMESTAMP = "firsttimestamp";
public static final String LASTIMESTAMP = "lasttimestamp";
public static final String LASTTIMEUSED = "lasttimeused";
public static final String TOTALTIMEFOREGROUND = "totaltimeforeground";
public static final String _CREATE_AppUsage_MONTH = "create table if not exists "+TABLE_NAME+"("
+PACKAGENAME+" text not null , "
+FIRSTTIMESTAMP+" timestamp not null , "
+LASTIMESTAMP+" timestamp not null , "
+LASTTIMEUSED+" timestamp not null , "
+TOTALTIMEFOREGROUND+" bigint not null default 0, primary key(" +PACKAGENAME +"," + FIRSTTIMESTAMP+ "));";
}
public static final class CreateDB_AppUsage_WEEK implements BaseColumns {
public static final String TABLE_NAME = "AppUsageWeek";
public static final String PACKAGENAME = "packagename";
public static final String FIRSTTIMESTAMP = "firsttimestamp";
public static final String LASTIMESTAMP = "lasttimestamp";
public static final String LASTTIMEUSED = "lasttimeused";
public static final String TOTALTIMEFOREGROUND = "totaltimeforeground";
public static final String _CREATE_AppUsage_WEEK = "create table if not exists "+TABLE_NAME+"("
+PACKAGENAME+" text not null , "
+FIRSTTIMESTAMP+" timestamp not null , "
+LASTIMESTAMP+" timestamp not null , "
+LASTTIMEUSED+" timestamp not null , "
+TOTALTIMEFOREGROUND+" bigint not null default 0, primary key(" +PACKAGENAME +"," + FIRSTTIMESTAMP+ "));";
}
public static final class CreateDB_AppUsage_DAY implements BaseColumns {
public static final String TABLE_NAME = "AppUsageDay";
public static final String PACKAGENAME = "packagename";
public static final String FIRSTTIMESTAMP = "firsttimestamp";
public static final String LASTIMESTAMP = "lasttimestamp";
public static final String LASTTIMEUSED = "lasttimeused";
public static final String TOTALTIMEFOREGROUND = "totaltimeforeground";
public static final String _CREATE_AppUsage_DAY = "create table if not exists "+TABLE_NAME+"("
+PACKAGENAME+" text not null , "
+FIRSTTIMESTAMP+" timestamp not null , "
+LASTIMESTAMP+" timestamp not null , "
+LASTTIMEUSED+" timestamp not null , "
+TOTALTIMEFOREGROUND+" bigint not null default 0, primary key(" +PACKAGENAME +"," + FIRSTTIMESTAMP+ "));";
}
public static final class CreateDB_AccountInfo implements BaseColumns {
public static final String TABLE_NAME = "AccountInfo";
public static final String ACCOUNTNAME = "accountname";
public static final String ACCOUNTTYPE = "accounttype";
public static final String _CREATE_AccountInfo = "create table if not exists "+TABLE_NAME+"("
+ACCOUNTNAME+" text not null , "
+ACCOUNTTYPE+" text not null , primary key(" + ACCOUNTNAME + "," + ACCOUNTTYPE + ")) ";
}
public static final class CreateDB_PhoneInfo implements BaseColumns {
public static final String TABLE_NAME = "PhoneInfo";
public static final String PHONETYPE = "phonetype";
public static final String SOFTWARENUMBER = "softwarenumber";
public static final String PHONENUMBER = "phonenumber";
public static final String SUBSCRIBERID = "subscriberid";
public static final String ADID = "adid";
public static final String CALLSTATE = "callstate";
public static final String DATASTATE = "datastate";
public static final String NETWORKTYPE = "networktype";
public static final String NETWORKCOUNTRYISO = "networkcountryiso";
public static final String SIMCOUNTRYISO = "simcountryiso";
public static final String NETWORKOPERATER = "networkoperater";
public static final String SIMOPERATOR = "simoperator";
public static final String NETWORKOPERATORNAME = "networkoperatorname";
public static final String SIMOPERATORNAME = "simoperatorname";
public static final String SIMSERIALNUMBER = "simserialnumber";
public static final String SIMSTATE = "simstate";
public static final String ISNETWORKROMING = "isnetworkroming";
public static final String _CREATE_PhoneInfo = "create table if not exists "+TABLE_NAME+"("
+PHONETYPE+" int not null primary key, "
+SOFTWARENUMBER+" text , "
+PHONENUMBER+" text , "
+SUBSCRIBERID+" text , "
+ADID+" text , "
+CALLSTATE+" int , "
+DATASTATE+" int , "
+NETWORKTYPE+" int , "
+NETWORKCOUNTRYISO+" text , "
+SIMCOUNTRYISO+" text , "
+NETWORKOPERATER+" text , "
+SIMOPERATOR+" text , "
+NETWORKOPERATORNAME+" text , "
+SIMOPERATORNAME+" text , "
+SIMSERIALNUMBER+" text , "
+SIMSTATE+" int , "
+ISNETWORKROMING +" bool ) ";
}
}