Ma Suhyeon

Fix insertion conflict.

Showing 59 changed files with 3178 additions and 0 deletions
1 +*.iml
2 +.gradle
3 +/local.properties
4 +/.idea/caches
5 +/.idea/libraries
6 +/.idea/modules.xml
7 +/.idea/workspace.xml
8 +/.idea/navEditor.xml
9 +/.idea/assetWizardSettings.xml
10 +.DS_Store
11 +/build
12 +/captures
13 +.externalNativeBuild
14 +.cxx
1 +<component name="ProjectCodeStyleConfiguration">
2 + <code_scheme name="Project" version="173">
3 + <codeStyleSettings language="XML">
4 + <indentOptions>
5 + <option name="CONTINUATION_INDENT_SIZE" value="4" />
6 + </indentOptions>
7 + <arrangement>
8 + <rules>
9 + <section>
10 + <rule>
11 + <match>
12 + <AND>
13 + <NAME>xmlns:android</NAME>
14 + <XML_ATTRIBUTE />
15 + <XML_NAMESPACE>^$</XML_NAMESPACE>
16 + </AND>
17 + </match>
18 + </rule>
19 + </section>
20 + <section>
21 + <rule>
22 + <match>
23 + <AND>
24 + <NAME>xmlns:.*</NAME>
25 + <XML_ATTRIBUTE />
26 + <XML_NAMESPACE>^$</XML_NAMESPACE>
27 + </AND>
28 + </match>
29 + <order>BY_NAME</order>
30 + </rule>
31 + </section>
32 + <section>
33 + <rule>
34 + <match>
35 + <AND>
36 + <NAME>.*:id</NAME>
37 + <XML_ATTRIBUTE />
38 + <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
39 + </AND>
40 + </match>
41 + </rule>
42 + </section>
43 + <section>
44 + <rule>
45 + <match>
46 + <AND>
47 + <NAME>.*:name</NAME>
48 + <XML_ATTRIBUTE />
49 + <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
50 + </AND>
51 + </match>
52 + </rule>
53 + </section>
54 + <section>
55 + <rule>
56 + <match>
57 + <AND>
58 + <NAME>name</NAME>
59 + <XML_ATTRIBUTE />
60 + <XML_NAMESPACE>^$</XML_NAMESPACE>
61 + </AND>
62 + </match>
63 + </rule>
64 + </section>
65 + <section>
66 + <rule>
67 + <match>
68 + <AND>
69 + <NAME>style</NAME>
70 + <XML_ATTRIBUTE />
71 + <XML_NAMESPACE>^$</XML_NAMESPACE>
72 + </AND>
73 + </match>
74 + </rule>
75 + </section>
76 + <section>
77 + <rule>
78 + <match>
79 + <AND>
80 + <NAME>.*</NAME>
81 + <XML_ATTRIBUTE />
82 + <XML_NAMESPACE>^$</XML_NAMESPACE>
83 + </AND>
84 + </match>
85 + <order>BY_NAME</order>
86 + </rule>
87 + </section>
88 + <section>
89 + <rule>
90 + <match>
91 + <AND>
92 + <NAME>.*</NAME>
93 + <XML_ATTRIBUTE />
94 + <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
95 + </AND>
96 + </match>
97 + <order>ANDROID_ATTRIBUTE_ORDER</order>
98 + </rule>
99 + </section>
100 + <section>
101 + <rule>
102 + <match>
103 + <AND>
104 + <NAME>.*</NAME>
105 + <XML_ATTRIBUTE />
106 + <XML_NAMESPACE>.*</XML_NAMESPACE>
107 + </AND>
108 + </match>
109 + <order>BY_NAME</order>
110 + </rule>
111 + </section>
112 + </rules>
113 + </arrangement>
114 + </codeStyleSettings>
115 + </code_scheme>
116 +</component>
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" encoding="UTF-8"?>
2 +<project version="4">
3 + <component name="GradleMigrationSettings" migrationVersion="1" />
4 + <component name="GradleSettings">
5 + <option name="linkedExternalProjectsSettings">
6 + <GradleProjectSettings>
7 + <option name="delegatedBuild" value="false" />
8 + <option name="testRunner" value="PLATFORM" />
9 + <option name="distributionType" value="DEFAULT_WRAPPED" />
10 + <option name="externalProjectPath" value="$PROJECT_DIR$" />
11 + <option name="modules">
12 + <set>
13 + <option value="$PROJECT_DIR$" />
14 + <option value="$PROJECT_DIR$/app" />
15 + </set>
16 + </option>
17 + <option name="resolveModulePerSourceSet" value="false" />
18 + </GradleProjectSettings>
19 + </option>
20 + </component>
21 +</project>
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" encoding="UTF-8"?>
2 +<project version="4">
3 + <component name="RemoteRepositoriesConfiguration">
4 + <remote-repository>
5 + <option name="id" value="central" />
6 + <option name="name" value="Maven Central repository" />
7 + <option name="url" value="https://repo1.maven.org/maven2" />
8 + </remote-repository>
9 + <remote-repository>
10 + <option name="id" value="jboss.community" />
11 + <option name="name" value="JBoss Community repository" />
12 + <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
13 + </remote-repository>
14 + <remote-repository>
15 + <option name="id" value="BintrayJCenter" />
16 + <option name="name" value="BintrayJCenter" />
17 + <option name="url" value="https://jcenter.bintray.com/" />
18 + </remote-repository>
19 + <remote-repository>
20 + <option name="id" value="Google" />
21 + <option name="name" value="Google" />
22 + <option name="url" value="https://dl.google.com/dl/android/maven2/" />
23 + </remote-repository>
24 + </component>
25 +</project>
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" encoding="UTF-8"?>
2 +<project version="4">
3 + <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="JDK" project-jdk-type="JavaSDK">
4 + <output url="file://$PROJECT_DIR$/build/classes" />
5 + </component>
6 + <component name="ProjectType">
7 + <option name="id" value="Android" />
8 + </component>
9 +</project>
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" encoding="UTF-8"?>
2 +<project version="4">
3 + <component name="RunConfigurationProducerService">
4 + <option name="ignoredProducers">
5 + <set>
6 + <option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
7 + <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
8 + <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
9 + </set>
10 + </option>
11 + </component>
12 +</project>
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" encoding="UTF-8"?>
2 +<project version="4">
3 + <component name="VcsDirectoryMappings">
4 + <mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
5 + </component>
6 +</project>
...\ No newline at end of file ...\ No newline at end of file
1 +apply plugin: 'com.android.application'
2 +
3 +android {
4 + compileSdkVersion 29
5 + buildToolsVersion "29.0.2"
6 + defaultConfig {
7 + applicationId "com.example.dataextraction"
8 + minSdkVersion 23
9 + targetSdkVersion 28
10 + versionCode 1
11 + versionName "1.0"
12 + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
13 + }
14 + buildTypes {
15 + release {
16 + minifyEnabled false
17 + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
18 + }
19 + }
20 +}
21 +
22 +dependencies {
23 + implementation fileTree(dir: 'libs', include: ['*.jar'])
24 + implementation 'androidx.appcompat:appcompat:1.0.2'
25 + implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
26 + testImplementation 'junit:junit:4.12'
27 + androidTestImplementation 'androidx.test:runner:1.1.1'
28 + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
29 + implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.5'
30 + implementation group: 'io.socket', name: 'socket.io-client', version: '1.0.0'
31 +}
1 +# Add project specific ProGuard rules here.
2 +# You can control the set of applied configuration files using the
3 +# proguardFiles setting in build.gradle.
4 +#
5 +# For more details, see
6 +# http://developer.android.com/guide/developing/tools/proguard.html
7 +
8 +# If your project uses WebView with JS, uncomment the following
9 +# and specify the fully qualified class name to the JavaScript interface
10 +# class:
11 +#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 +# public *;
13 +#}
14 +
15 +# Uncomment this to preserve the line number information for
16 +# debugging stack traces.
17 +#-keepattributes SourceFile,LineNumberTable
18 +
19 +# If you keep the line number information, uncomment this to
20 +# hide the original source file name.
21 +#-renamesourcefileattribute SourceFile
No preview for this file type
1 +[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
...\ No newline at end of file ...\ No newline at end of file
1 +package com.example.dataextraction;
2 +
3 +import android.content.Context;
4 +
5 +import androidx.test.platform.app.InstrumentationRegistry;
6 +import androidx.test.ext.junit.runners.AndroidJUnit4;
7 +
8 +import org.junit.Test;
9 +import org.junit.runner.RunWith;
10 +
11 +import static org.junit.Assert.*;
12 +
13 +/**
14 + * Instrumented test, which will execute on an Android device.
15 + *
16 + * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
17 + */
18 +@RunWith(AndroidJUnit4.class)
19 +public class ExampleInstrumentedTest {
20 + @Test
21 + public void useAppContext() {
22 + // Context of the app under test.
23 + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
24 +
25 + assertEquals("com.example.dataextraction", appContext.getPackageName());
26 + }
27 +}
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 + xmlns:tools="http://schemas.android.com/tools"
4 + package="com.example.dataextraction">
5 +
6 + <uses-permission
7 + android:name="android.permission.PACKAGE_USAGE_STATS"
8 + tools:ignore="ProtectedPermissions" />
9 + <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
10 + <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
11 + <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
12 + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
13 + <uses-permission android:name="android.permission.READ_CALENDAR" />
14 + <uses-permission android:name="android.permission.READ_CONTACTS" />
15 + <uses-permission android:name="android.permission.READ_CALL_LOG" />
16 + <uses-permission android:name="android.permission.READ_SMS" />
17 + <uses-permission android:name="android.permission.READ_PHONE_STATE" />
18 + <uses-permission android:name="android.permission.GET_ACCOUNTS" />
19 + <uses-permission android:name="android.permission.INTERNET" />
20 + <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
21 + <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
22 +
23 + <application
24 + android:allowBackup="true"
25 + android:icon="@mipmap/ic_launcher"
26 + android:label="@string/app_name"
27 + android:roundIcon="@mipmap/ic_launcher_round"
28 + android:supportsRtl="true"
29 + android:theme="@style/AppTheme">
30 + <activity android:name=".LoadingActivity">
31 + <intent-filter>
32 + <action android:name="android.intent.action.MAIN" />
33 +
34 + <category android:name="android.intent.category.LAUNCHER" />
35 + </intent-filter>
36 + </activity>
37 + <activity android:name=".MainActivity">
38 + </activity>
39 + </application>
40 +
41 +</manifest>
...\ No newline at end of file ...\ No newline at end of file
1 +package com.example.dataextraction;
2 +
3 +import android.provider.BaseColumns;
4 +
5 +public final class AudioDataBase {
6 + public static final class CreateDB implements BaseColumns {
7 + public static final String TITLE = "title";
8 + public static final String DATE_ADDED = "date_added";
9 + public static final String MIME_TYPE = "mime_type";
10 + public static final String PATH = "path";
11 + public static final String ALBUM = "album";
12 + public static final String ARTIST = "artist";
13 + public static final String COMPOSER = "composer";
14 + public static final String YEAR = "year";
15 +; public static final String SIZE = "size";
16 + public static final String _TABLENAME0 = "audio";
17 + public static final String _CREATE0 = "create table if not exists "+_TABLENAME0+"("
18 + +TITLE+" text not null primary key , "
19 + +DATE_ADDED + " text not null ,"
20 + +MIME_TYPE + " text not null ,"
21 + +PATH + " text not null ,"
22 + +ALBUM + " text, "
23 + +ARTIST+ " text, "
24 + +COMPOSER+" text, "
25 + +YEAR+" text, "
26 + +SIZE+" text);";
27 +
28 + }
29 +}
1 +package com.example.dataextraction;
2 +
3 +import android.provider.BaseColumns;
4 +
5 +public final class CalendarDataBase {
6 + public static final class CreateDB implements BaseColumns {
7 + public static final String CALENDAR_ID = "calendar_id";
8 + public static final String TITLE = "title";
9 + public static final String EVENT_LOCATION = "event_location";
10 + public static final String DESCRIPTION = "description";
11 + public static final String DTSTART = "dtstart";
12 + public static final String DTEND = "dtend";
13 + public static final String DURATION = "duration";
14 + public static final String ALL_DAY = "all_day";
15 + public static final String DISPLAY_NAME = "display_name";
16 + public static final String ACCOUNT_NAME = "account_name";
17 + public static final String OWNER_NAME = "owner_name";
18 + public static final String RRULE = "rrlue";
19 + public static final String RDATE = "rdate";
20 + public static final String _TABLENAME0 = "calendar";
21 + public static final String _CREATE0 = "create table if not exists "+_TABLENAME0+"("
22 + + " id integer primary key autoincrement, "
23 + +TITLE+" text not null , "
24 + +CALENDAR_ID + " text not null, "
25 + +EVENT_LOCATION + " text , "
26 + +DESCRIPTION + " text, "
27 + +DTSTART + " text not null, "
28 + +DTEND + " text not null, "
29 + +DURATION+ " text , "
30 + +ALL_DAY + " text, "
31 + +DISPLAY_NAME + " text not null, "
32 + +ACCOUNT_NAME + " text not null, "
33 + +OWNER_NAME+ " text not null, "
34 + +RRULE + " text, "
35 + +RDATE + " text );";
36 +
37 + }
38 +}
1 +package com.example.dataextraction;
2 +
3 +import android.provider.BaseColumns;
4 +
5 +public class CallLogDataBase {
6 + public static final class CreateDB implements BaseColumns {
7 + public static final String ID = "id";
8 + public static final String TYPE = "type";
9 + public static final String NAME = "name";
10 + public static final String NUMBER = "number";
11 + public static final String DURATION = "duration";
12 + public static final String DATE = "date";
13 + public static final String _TABLENAME0 = "calllog";
14 + public static final String _CREATE0 = "create table if not exists "+_TABLENAME0+"("
15 + +ID+" INTEGER PRIMARY KEY autoincrement, "
16 + +TYPE+" integer,"
17 + +NAME + " text,"
18 + +NUMBER + " text,"
19 + +DURATION + " integer,"
20 + +DATE + " text);";
21 + }
22 +}
1 +package com.example.dataextraction;
2 +
3 +import android.provider.BaseColumns;
4 +
5 +public class ContactDataBase {
6 + public static final class CreateDB implements BaseColumns {
7 + public static final String NUMBER = "number";
8 + public static final String NAME = "name";
9 + public static final String PHOTO_ID = "photo_id";
10 + public static final String PERSON_ID = "person_id";
11 + public static final String _TABLENAME0 = "contact";
12 + public static final String _CREATE0 = "create table if not exists "+_TABLENAME0+"("
13 + +NUMBER+" text not null primary key, "
14 + +NAME+" text,"
15 + +PHOTO_ID + " integer,"
16 + +PERSON_ID + " integer);";
17 + }
18 +}
1 +package com.example.dataextraction;
2 +
3 +import android.content.ContentValues;
4 +import android.content.Context;
5 +import android.database.SQLException;
6 +import android.database.sqlite.SQLiteDatabase;
7 +import android.database.sqlite.SQLiteOpenHelper;
8 +import android.util.Log;
9 +
10 +import androidx.annotation.Nullable;
11 +
12 +public class DBHelper {
13 +
14 + private static final String DATABASE_NAME = "InnerDatabase.db";
15 + private static final int DATABASE_VERSION = 1;
16 + public static SQLiteDatabase mDB;
17 + private DatabaseHelper mDBHelper;
18 + private Context mCtx;
19 +
20 + private class DatabaseHelper extends SQLiteOpenHelper {
21 + public DatabaseHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
22 + super(context, name, factory, version);
23 + }
24 +
25 + @Override
26 + public void onCreate(SQLiteDatabase db) {
27 + db.execSQL(PhotoDataBase.CreateDB._CREATE0);
28 + db.execSQL(VideoDataBase.CreateDB._CREATE0);
29 + db.execSQL(AudioDataBase.CreateDB._CREATE0);
30 + db.execSQL(CalendarDataBase.CreateDB._CREATE0);
31 +
32 + db.execSQL(Databases.CreateDB_App._CREATE_AppInfo);
33 + db.execSQL(Databases.CreateDB_AccountInfo._CREATE_AccountInfo);
34 + db.execSQL(Databases.CreateDB_AppUsage_YEAR._CREATE_AppUsage_YEAR);
35 + db.execSQL(Databases.CreateDB_AppUsage_MONTH._CREATE_AppUsage_MONTH);
36 + db.execSQL(Databases.CreateDB_AppUsage_WEEK._CREATE_AppUsage_WEEK);
37 + db.execSQL(Databases.CreateDB_AppUsage_DAY._CREATE_AppUsage_DAY);
38 + db.execSQL(Databases.CreateDB_PhoneInfo._CREATE_PhoneInfo);
39 + db.execSQL(Databases.CreateDB_Document._CREATE_Document);
40 +
41 + db.execSQL(CallLogDataBase.CreateDB._CREATE0);
42 + db.execSQL(ContactDataBase.CreateDB._CREATE0);
43 + db.execSQL(SMSDataBase.CreateDB._CREATE0);
44 + db.execSQL(WifiDataBase.CreateDB._CREATE0);
45 + }
46 +
47 + @Override
48 + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
49 + db.execSQL("DROP TABLE IF EXISTS " + PhotoDataBase.CreateDB._TABLENAME0);
50 + db.execSQL("DROP TABLE IF EXISTS " + VideoDataBase.CreateDB._TABLENAME0);
51 + db.execSQL("DROP TABLE IF EXISTS " + AudioDataBase.CreateDB._TABLENAME0);
52 + db.execSQL("DROP TABLE IF EXISTS " + CalendarDataBase.CreateDB._TABLENAME0);
53 +
54 + db.execSQL("DROP TABLE IF EXISTS " + Databases.CreateDB_App.TABLE_NAME);
55 + db.execSQL("DROP TABLE IF EXISTS " + Databases.CreateDB_AccountInfo.TABLE_NAME);
56 + db.execSQL("DROP TABLE IF EXISTS " + Databases.CreateDB_AppUsage_YEAR.TABLE_NAME);
57 + db.execSQL("DROP TABLE IF EXISTS " + Databases.CreateDB_AppUsage_MONTH.TABLE_NAME);
58 + db.execSQL("DROP TABLE IF EXISTS " + Databases.CreateDB_AppUsage_WEEK.TABLE_NAME);
59 + db.execSQL("DROP TABLE IF EXISTS " + Databases.CreateDB_AppUsage_DAY.TABLE_NAME);
60 + db.execSQL("DROP TABLE IF EXISTS " + Databases.CreateDB_PhoneInfo.TABLE_NAME);
61 + db.execSQL("DROP TABLE IF EXISTS " + Databases.CreateDB_Document.TABLE_NAME);
62 +
63 + db.execSQL("DROP TABLE IF EXISTS " + CallLogDataBase.CreateDB._TABLENAME0);
64 + db.execSQL("DROP TABLE IF EXISTS " + ContactDataBase.CreateDB._TABLENAME0);
65 + db.execSQL("DROP TABLE IF EXISTS " + SMSDataBase.CreateDB._TABLENAME0);
66 + db.execSQL("DROP TABLE IF EXISTS " + WifiDataBase.CreateDB._TABLENAME0);
67 +
68 + onCreate(db);
69 + }
70 + }
71 + public DBHelper(Context context){
72 + this.mCtx = context;
73 + }
74 +
75 + public DBHelper open() throws SQLException {
76 + mDBHelper = new DatabaseHelper(mCtx, DATABASE_NAME, null, DATABASE_VERSION);
77 + mDB = mDBHelper.getWritableDatabase();
78 + return this;
79 + }
80 +
81 + public void close(){
82 + mDB.close();
83 + }
84 +
85 + public long insertPColumn(String title, int id, String date_added, String display_name
86 + , String mime_type, String path, String latitude, String longitude, String size){
87 + ContentValues values = new ContentValues();
88 + values.put(PhotoDataBase.CreateDB.TITLE, title);
89 + values.put(PhotoDataBase.CreateDB.ID, id);
90 + values.put(PhotoDataBase.CreateDB.DATE_ADDED, date_added);
91 + values.put(PhotoDataBase.CreateDB.DISPLAY_NAME, display_name);
92 + values.put(PhotoDataBase.CreateDB.MIME_TYPE, mime_type);
93 + values.put(PhotoDataBase.CreateDB.PATH, path);
94 + values.put(PhotoDataBase.CreateDB.LATITUDE, latitude);
95 + values.put(PhotoDataBase.CreateDB.LONGITUDE, longitude);
96 + values.put(PhotoDataBase.CreateDB.SIZE, size);
97 + return mDB.insertWithOnConflict(PhotoDataBase.CreateDB._TABLENAME0, null, values, SQLiteDatabase.CONFLICT_IGNORE);
98 + }
99 +
100 + public long insertVColumn(String title, String date_added, String display_name, String mime_type
101 + , String path, String latitude, String longitude, String album, String artist, String bookmark
102 + ,String category, String description, String language, String resolution, String tags, String size){
103 + ContentValues values = new ContentValues();
104 + values.put(VideoDataBase.CreateDB.TITLE, title);
105 + values.put(VideoDataBase.CreateDB.DATE_ADDED, date_added);
106 + values.put(VideoDataBase.CreateDB.DISPLAY_NAME, display_name);
107 + values.put(VideoDataBase.CreateDB.MIME_TYPE, mime_type);
108 + values.put(VideoDataBase.CreateDB.PATH, path);
109 + values.put(VideoDataBase.CreateDB.LATITUDE, latitude);
110 + values.put(VideoDataBase.CreateDB.LONGITUDE, longitude);
111 + values.put(VideoDataBase.CreateDB.ALBUM, album);
112 + values.put(VideoDataBase.CreateDB.ARTIST, artist);
113 + values.put(VideoDataBase.CreateDB.BOOKMARK, bookmark);
114 + values.put(VideoDataBase.CreateDB.CATEGORY, category);
115 + values.put(VideoDataBase.CreateDB.DESCRIPTION, description);
116 + values.put(VideoDataBase.CreateDB.LANGUAGE, language);
117 + values.put(VideoDataBase.CreateDB.RESOLUTION, resolution);
118 + values.put(VideoDataBase.CreateDB.TAGS, tags);
119 + values.put(VideoDataBase.CreateDB.SIZE, size);
120 + return mDB.insertWithOnConflict(VideoDataBase.CreateDB._TABLENAME0, null, values, SQLiteDatabase.CONFLICT_IGNORE);
121 + }
122 +
123 + public long insertAColumn(String title, String date_added, String mime_type, String path
124 + ,String album, String artist, String composer, String year, String size){
125 + ContentValues values = new ContentValues();
126 + values.put(AudioDataBase.CreateDB.TITLE, title);
127 + values.put(AudioDataBase.CreateDB.DATE_ADDED, date_added);
128 + values.put(AudioDataBase.CreateDB.MIME_TYPE, mime_type);
129 + values.put(AudioDataBase.CreateDB.PATH, path);
130 + values.put(AudioDataBase.CreateDB.ALBUM, album);
131 + values.put(AudioDataBase.CreateDB.ARTIST, artist);
132 + values.put(AudioDataBase.CreateDB.COMPOSER, composer);
133 + values.put(AudioDataBase.CreateDB.YEAR, year);
134 + values.put(AudioDataBase.CreateDB.SIZE, size);
135 + return mDB.insertWithOnConflict(AudioDataBase.CreateDB._TABLENAME0, null, values, SQLiteDatabase.CONFLICT_IGNORE);
136 + }
137 +
138 + public long insertCColumn(String calendar_id, String title, String event_location, String description
139 + , String dtstart, String dtend, String duration, String all_day, String display_name
140 + , String account_name, String owner_name, String r_rule, String r_date){
141 + ContentValues values = new ContentValues();
142 + values.put(CalendarDataBase.CreateDB.TITLE, title);
143 + values.put(CalendarDataBase.CreateDB.CALENDAR_ID, calendar_id);
144 + values.put(CalendarDataBase.CreateDB.EVENT_LOCATION, event_location);
145 + values.put(CalendarDataBase.CreateDB.DESCRIPTION, description);
146 + values.put(CalendarDataBase.CreateDB.DTSTART, dtstart);
147 + values.put(CalendarDataBase.CreateDB.DTEND, dtend);
148 + values.put(CalendarDataBase.CreateDB.DURATION, duration);
149 + values.put(CalendarDataBase.CreateDB.ALL_DAY, all_day);
150 + values.put(CalendarDataBase.CreateDB.DISPLAY_NAME, display_name);
151 + values.put(CalendarDataBase.CreateDB.ACCOUNT_NAME, account_name);
152 + values.put(CalendarDataBase.CreateDB.OWNER_NAME, owner_name);
153 + values.put(CalendarDataBase.CreateDB.RRULE, r_rule);
154 + values.put(CalendarDataBase.CreateDB.RDATE, r_date);
155 + return mDB.insertWithOnConflict(CalendarDataBase.CreateDB._TABLENAME0, null, values, SQLiteDatabase.CONFLICT_IGNORE);
156 + }
157 +
158 + //Package 정보에 Network 사용량 추가
159 + public void addAppInfo(String packageName, String versionName, String applicationName
160 + , long firstInstallTime, long lastUpdateTime, long wifibytes, long cellularbytes) {
161 + SQLiteDatabase db = mDBHelper.getWritableDatabase();
162 + String wifi = String.valueOf(wifibytes);
163 + String cellular = String.valueOf(cellularbytes);
164 + ContentValues values = new ContentValues();
165 + values.put(Databases.CreateDB_App.PACKAGENAME, packageName);
166 + values.put(Databases.CreateDB_App.VERSION, versionName);
167 + values.put(Databases.CreateDB_App.NAME, applicationName);
168 + values.put(Databases.CreateDB_App.FIRSTINSTALL, firstInstallTime);
169 + values.put(Databases.CreateDB_App.LASTUPDATE, lastUpdateTime);
170 + values.put(Databases.CreateDB_App.WIFIUSAGE, wifibytes);
171 + values.put(Databases.CreateDB_App.CELLULARUSAGE, cellularbytes);
172 + db.insertWithOnConflict(Databases.CreateDB_App.TABLE_NAME, null, values, SQLiteDatabase.CONFLICT_IGNORE);
173 +
174 + //Log.d("LogTest","addAppUsage");
175 +
176 + //Log.d("LogTest", String.valueOf(cellularbytes));
177 + }
178 + public void addAccountInfo(String accountname, String accounttype) {
179 + SQLiteDatabase db = mDBHelper.getWritableDatabase();
180 + ContentValues values = new ContentValues();
181 + values.put(Databases.CreateDB_AccountInfo.ACCOUNTNAME, accountname);
182 + values.put(Databases.CreateDB_AccountInfo.ACCOUNTTYPE, accounttype);
183 + db.insertWithOnConflict(Databases.CreateDB_AccountInfo.TABLE_NAME, null, values, SQLiteDatabase.CONFLICT_IGNORE);
184 + //Log.d("LogTest","addAccountInfo");
185 + }
186 +
187 + public void addDocumentInfo(String name, String title, long date_added, long date_modified, String mime_type, String path, String size) {
188 + SQLiteDatabase db = mDBHelper.getWritableDatabase();
189 + ContentValues values = new ContentValues();
190 + values.put(Databases.CreateDB_Document.NAME, name);
191 + values.put(Databases.CreateDB_Document.TITLE, title);
192 + values.put(Databases.CreateDB_Document.DATE_ADDED, date_added);
193 + values.put(Databases.CreateDB_Document.DATE_MODIFIED, date_modified);
194 + values.put(Databases.CreateDB_Document.MIME_TYPE, mime_type);
195 + values.put(Databases.CreateDB_Document.PATH, path);
196 + values.put(Databases.CreateDB_Document.SIZE, size);
197 + db.insertWithOnConflict(Databases.CreateDB_Document.TABLE_NAME, null, values, SQLiteDatabase.CONFLICT_IGNORE);
198 + //Log.d("LogTest","addAccountInfo");
199 + }
200 +
201 + public void addAppUsage_YEAR(String packageName, long firsttimestamp, long lasttimestamp,
202 + long lasttimeused, long totaltimeforeground) {
203 + SQLiteDatabase db = mDBHelper.getWritableDatabase();
204 + ContentValues values = new ContentValues();
205 + values.put(Databases.CreateDB_AppUsage_YEAR.PACKAGENAME, packageName);
206 + values.put(Databases.CreateDB_AppUsage_YEAR.FIRSTTIMESTAMP, firsttimestamp);
207 + values.put(Databases.CreateDB_AppUsage_YEAR.LASTIMESTAMP, lasttimestamp);
208 + values.put(Databases.CreateDB_AppUsage_YEAR.LASTTIMEUSED, lasttimeused);
209 + values.put(Databases.CreateDB_AppUsage_YEAR.TOTALTIMEFOREGROUND, totaltimeforeground);
210 + db.insertWithOnConflict(Databases.CreateDB_AppUsage_YEAR.TABLE_NAME, null, values, SQLiteDatabase.CONFLICT_IGNORE);
211 + //Log.d("LogTest","addAppUsageYear");
212 + }
213 +
214 + public void addAppUsage_MONTH(String packageName, long firsttimestamp, long lasttimestamp,
215 + long lasttimeused, long totaltimeforeground) {
216 + SQLiteDatabase db = mDBHelper.getWritableDatabase();
217 + ContentValues values = new ContentValues();
218 + values.put(Databases.CreateDB_AppUsage_MONTH.PACKAGENAME, packageName);
219 + values.put(Databases.CreateDB_AppUsage_MONTH.FIRSTTIMESTAMP, firsttimestamp);
220 + values.put(Databases.CreateDB_AppUsage_MONTH.LASTIMESTAMP, lasttimestamp);
221 + values.put(Databases.CreateDB_AppUsage_MONTH.LASTTIMEUSED, lasttimeused);
222 + values.put(Databases.CreateDB_AppUsage_MONTH.TOTALTIMEFOREGROUND, totaltimeforeground);
223 + db.insertWithOnConflict(Databases.CreateDB_AppUsage_MONTH.TABLE_NAME, null, values, SQLiteDatabase.CONFLICT_IGNORE);
224 + //Log.d("LogTest","addAppUsageMonth");
225 + }
226 +
227 + public void addAppUsage_WEEK(String packageName, long firsttimestamp, long lasttimestamp,
228 + long lasttimeused, long totaltimeforeground) {
229 + SQLiteDatabase db = mDBHelper.getWritableDatabase();
230 + ContentValues values = new ContentValues();
231 + values.put(Databases.CreateDB_AppUsage_WEEK.PACKAGENAME, packageName);
232 + values.put(Databases.CreateDB_AppUsage_WEEK.FIRSTTIMESTAMP, firsttimestamp);
233 + values.put(Databases.CreateDB_AppUsage_WEEK.LASTIMESTAMP, lasttimestamp);
234 + values.put(Databases.CreateDB_AppUsage_WEEK.LASTTIMEUSED, lasttimeused);
235 + values.put(Databases.CreateDB_AppUsage_WEEK.TOTALTIMEFOREGROUND, totaltimeforeground);
236 + db.insertWithOnConflict(Databases.CreateDB_AppUsage_WEEK.TABLE_NAME, null, values, SQLiteDatabase.CONFLICT_IGNORE);
237 + //Log.d("LogTest","addAppUsageWeek");
238 + }
239 +
240 + public void addAppUsage_DAY(String packageName, long firsttimestamp, long lasttimestamp,
241 + long lasttimeused, long totaltimeforeground) {
242 + SQLiteDatabase db = mDBHelper.getWritableDatabase();
243 + ContentValues values = new ContentValues();
244 + values.put(Databases.CreateDB_AppUsage_DAY.PACKAGENAME, packageName);
245 + values.put(Databases.CreateDB_AppUsage_DAY.FIRSTTIMESTAMP, firsttimestamp);
246 + values.put(Databases.CreateDB_AppUsage_DAY.LASTIMESTAMP, lasttimestamp);
247 + values.put(Databases.CreateDB_AppUsage_DAY.LASTTIMEUSED, lasttimeused);
248 + values.put(Databases.CreateDB_AppUsage_DAY.TOTALTIMEFOREGROUND, totaltimeforeground);
249 + db.insertWithOnConflict(Databases.CreateDB_AppUsage_DAY.TABLE_NAME, null, values, SQLiteDatabase.CONFLICT_IGNORE);
250 + Log.d("LogTest","addAppUsageDay");
251 + }
252 + public void addPhoneInfo(int phonetype, String softwarenumber, String phonenumber, String subscriberid,
253 + String adid, int callstate, int datastate,
254 + int networktype, String networkcountryiso, String simcountryiso,
255 + String networkoperater, String simoperator, String networkoperatorname,
256 + String simoperatorname, String simserialnumber, int simstate,
257 + boolean isnetworkroming) {
258 + SQLiteDatabase db = mDBHelper.getWritableDatabase();
259 + ContentValues values = new ContentValues();
260 + values.put(Databases.CreateDB_PhoneInfo.PHONETYPE, phonetype);
261 + values.put(Databases.CreateDB_PhoneInfo.SOFTWARENUMBER, softwarenumber);
262 + values.put(Databases.CreateDB_PhoneInfo.PHONENUMBER, phonenumber);
263 + values.put(Databases.CreateDB_PhoneInfo.SUBSCRIBERID, subscriberid);
264 + values.put(Databases.CreateDB_PhoneInfo.ADID, adid);
265 + values.put(Databases.CreateDB_PhoneInfo.CALLSTATE, callstate);
266 + values.put(Databases.CreateDB_PhoneInfo.DATASTATE, datastate);
267 + values.put(Databases.CreateDB_PhoneInfo.NETWORKTYPE, networktype);
268 + values.put(Databases.CreateDB_PhoneInfo.NETWORKCOUNTRYISO, networkcountryiso);
269 + values.put(Databases.CreateDB_PhoneInfo.SIMCOUNTRYISO, simcountryiso);
270 + values.put(Databases.CreateDB_PhoneInfo.NETWORKOPERATER, networkoperater);
271 + values.put(Databases.CreateDB_PhoneInfo.SIMOPERATOR, simoperator);
272 + values.put(Databases.CreateDB_PhoneInfo.NETWORKOPERATORNAME, networkoperatorname);
273 + values.put(Databases.CreateDB_PhoneInfo.SIMOPERATORNAME, simoperatorname);
274 + values.put(Databases.CreateDB_PhoneInfo.SIMSERIALNUMBER, simserialnumber);
275 + values.put(Databases.CreateDB_PhoneInfo.SIMSTATE, simstate);
276 + values.put(Databases.CreateDB_PhoneInfo.ISNETWORKROMING, isnetworkroming);
277 + db.insertWithOnConflict(Databases.CreateDB_PhoneInfo.TABLE_NAME, null, values, SQLiteDatabase.CONFLICT_IGNORE);
278 + Log.d("LogTest", "addPhoneInfo");
279 + }
280 +
281 + public long insertCallLogColumn(String type, String name, String number, String duration
282 + , String date){
283 + ContentValues values = new ContentValues();
284 + values.put(CallLogDataBase.CreateDB.TYPE, type);
285 + values.put(CallLogDataBase.CreateDB.NAME, name);
286 + values.put(CallLogDataBase.CreateDB.NUMBER, number);
287 + values.put(CallLogDataBase.CreateDB.DURATION, duration);
288 + values.put(CallLogDataBase.CreateDB.DATE, date);
289 + return mDB.insertWithOnConflict(CallLogDataBase.CreateDB._TABLENAME0, null, values, SQLiteDatabase.CONFLICT_IGNORE);
290 + }
291 +
292 + public long insertContactColumn(String number, String name, String photo_id, String person_id){
293 + ContentValues values = new ContentValues();
294 + values.put(ContactDataBase.CreateDB.NUMBER, number);
295 + values.put(ContactDataBase.CreateDB.NAME, name);
296 + values.put(ContactDataBase.CreateDB.PHOTO_ID, photo_id);
297 + values.put(ContactDataBase.CreateDB.PERSON_ID, person_id);
298 + return mDB.insertWithOnConflict(ContactDataBase.CreateDB._TABLENAME0, null, values, SQLiteDatabase.CONFLICT_IGNORE);
299 + }
300 +
301 + public long insertSMSColumn(String mid, String tid, String type, String address, String person
302 + , String creator, String date, String body, String read){
303 + ContentValues values = new ContentValues();
304 + values.put(SMSDataBase.CreateDB.MID, mid);
305 + values.put(SMSDataBase.CreateDB.TID, tid);
306 + values.put(SMSDataBase.CreateDB.TYPE, type);
307 + values.put(SMSDataBase.CreateDB.ADDRESS, address);
308 + values.put(SMSDataBase.CreateDB.PERSON, person);
309 + values.put(SMSDataBase.CreateDB.CREATOR, creator);
310 + values.put(SMSDataBase.CreateDB.DATE, date);
311 + values.put(SMSDataBase.CreateDB.BODY, body);
312 + values.put(SMSDataBase.CreateDB.READ_C, read);
313 + return mDB.insertWithOnConflict(SMSDataBase.CreateDB._TABLENAME0, null, values, SQLiteDatabase.CONFLICT_IGNORE);
314 + }
315 +
316 + public long insertWifiColumn(String id, String ssid, String bssid, String wepkeys){
317 + ContentValues values = new ContentValues();
318 + values.put(WifiDataBase.CreateDB.ID, id);
319 + values.put(WifiDataBase.CreateDB.SSID, ssid);
320 + values.put(WifiDataBase.CreateDB.BSSID, bssid);
321 + values.put(WifiDataBase.CreateDB.WEPKEYS, wepkeys);
322 + return mDB.insertWithOnConflict(WifiDataBase.CreateDB._TABLENAME0, null, values, SQLiteDatabase.CONFLICT_IGNORE);
323 + }
324 +}
1 +package com.example.dataextraction;
2 +
3 +import android.provider.BaseColumns;
4 +
5 +import java.lang.reflect.Field;
6 +
7 +//데이터베이스 클래스
8 +public final class Databases {
9 +
10 + private Databases() {}
11 + public static final class CreateDB_Document implements BaseColumns {
12 + public static final String TABLE_NAME = "DocumentInfo";
13 + public static final String NAME = "name";
14 + public static final String TITLE = "title";
15 + public static final String DATE_ADDED = "date_added";
16 + public static final String DATE_MODIFIED = "date_modified";
17 + public static final String MIME_TYPE = "mime_type";
18 + public static final String PATH = "path";
19 + public static final String SIZE = "size";
20 + public static final String _CREATE_Document = "create table if not exists "+TABLE_NAME+"("
21 + +NAME+" text not null primary key, "
22 + +TITLE+" text not null , "
23 + +MIME_TYPE+" text not null , "
24 + +DATE_ADDED+" timestamp not null , "
25 + +DATE_MODIFIED+" timestamp not null , "
26 + +PATH+" text not null , "
27 + +SIZE+" text not null);";
28 + }
29 +
30 + public static final class CreateDB_App implements BaseColumns {
31 + public static final String TABLE_NAME = "AppInfo";
32 + public static final String PACKAGENAME = "packagename";
33 + public static final String VERSION = "version";
34 + public static final String NAME = "name";
35 + public static final String FIRSTINSTALL = "firstinstall";
36 + public static final String LASTUPDATE = "lastupdate";
37 + public static final String WIFIUSAGE = "wifiusage";
38 + public static final String CELLULARUSAGE = "cellularusage";
39 + public static final String USAGETIME = "usagetime";
40 + public static final String _CREATE_AppInfo = "create table if not exists "+TABLE_NAME+"("
41 + +PACKAGENAME+" text not null primary key, "
42 + +VERSION+" text not null , "
43 + +NAME+" text not null , "
44 + +FIRSTINSTALL+" timestamp not null , "
45 + +LASTUPDATE+" timestamp not null , "
46 + +WIFIUSAGE+" bigint not null , "
47 + +CELLULARUSAGE+" bigint not null);";
48 + }
49 +
50 + public static final class CreateDB_AppUsage_YEAR implements BaseColumns {
51 + public static final String TABLE_NAME = "AppUsageYear";
52 + public static final String PACKAGENAME = "packagename";
53 + public static final String FIRSTTIMESTAMP = "firsttimestamp";
54 + public static final String LASTIMESTAMP = "lasttimestamp";
55 + public static final String LASTTIMEUSED = "lasttimeused";
56 + public static final String TOTALTIMEFOREGROUND = "totaltimeforeground";
57 + public static final String _CREATE_AppUsage_YEAR = "create table if not exists "+TABLE_NAME+"("
58 + +PACKAGENAME+" text not null , "
59 + +FIRSTTIMESTAMP+" timestamp not null , "
60 + +LASTIMESTAMP+" timestamp not null , "
61 + +LASTTIMEUSED+" timestamp not null , "
62 + +TOTALTIMEFOREGROUND+" bigint not null default 0, primary key(" +PACKAGENAME +"," + FIRSTTIMESTAMP+ "));";
63 + }
64 +
65 + public static final class CreateDB_AppUsage_MONTH implements BaseColumns {
66 + public static final String TABLE_NAME = "AppUsageMonth";
67 + public static final String PACKAGENAME = "packagename";
68 + public static final String FIRSTTIMESTAMP = "firsttimestamp";
69 + public static final String LASTIMESTAMP = "lasttimestamp";
70 + public static final String LASTTIMEUSED = "lasttimeused";
71 + public static final String TOTALTIMEFOREGROUND = "totaltimeforeground";
72 + public static final String _CREATE_AppUsage_MONTH = "create table if not exists "+TABLE_NAME+"("
73 + +PACKAGENAME+" text not null , "
74 + +FIRSTTIMESTAMP+" timestamp not null , "
75 + +LASTIMESTAMP+" timestamp not null , "
76 + +LASTTIMEUSED+" timestamp not null , "
77 + +TOTALTIMEFOREGROUND+" bigint not null default 0, primary key(" +PACKAGENAME +"," + FIRSTTIMESTAMP+ "));";
78 + }
79 +
80 + public static final class CreateDB_AppUsage_WEEK implements BaseColumns {
81 + public static final String TABLE_NAME = "AppUsageWeek";
82 + public static final String PACKAGENAME = "packagename";
83 + public static final String FIRSTTIMESTAMP = "firsttimestamp";
84 + public static final String LASTIMESTAMP = "lasttimestamp";
85 + public static final String LASTTIMEUSED = "lasttimeused";
86 + public static final String TOTALTIMEFOREGROUND = "totaltimeforeground";
87 + public static final String _CREATE_AppUsage_WEEK = "create table if not exists "+TABLE_NAME+"("
88 + +PACKAGENAME+" text not null , "
89 + +FIRSTTIMESTAMP+" timestamp not null , "
90 + +LASTIMESTAMP+" timestamp not null , "
91 + +LASTTIMEUSED+" timestamp not null , "
92 + +TOTALTIMEFOREGROUND+" bigint not null default 0, primary key(" +PACKAGENAME +"," + FIRSTTIMESTAMP+ "));";
93 + }
94 +
95 + public static final class CreateDB_AppUsage_DAY implements BaseColumns {
96 + public static final String TABLE_NAME = "AppUsageDay";
97 + public static final String PACKAGENAME = "packagename";
98 + public static final String FIRSTTIMESTAMP = "firsttimestamp";
99 + public static final String LASTIMESTAMP = "lasttimestamp";
100 + public static final String LASTTIMEUSED = "lasttimeused";
101 + public static final String TOTALTIMEFOREGROUND = "totaltimeforeground";
102 + public static final String _CREATE_AppUsage_DAY = "create table if not exists "+TABLE_NAME+"("
103 + +PACKAGENAME+" text not null , "
104 + +FIRSTTIMESTAMP+" timestamp not null , "
105 + +LASTIMESTAMP+" timestamp not null , "
106 + +LASTTIMEUSED+" timestamp not null , "
107 + +TOTALTIMEFOREGROUND+" bigint not null default 0, primary key(" +PACKAGENAME +"," + FIRSTTIMESTAMP+ "));";
108 + }
109 +
110 + public static final class CreateDB_AccountInfo implements BaseColumns {
111 + public static final String TABLE_NAME = "AccountInfo";
112 + public static final String ACCOUNTNAME = "accountname";
113 + public static final String ACCOUNTTYPE = "accounttype";
114 + public static final String _CREATE_AccountInfo = "create table if not exists "+TABLE_NAME+"("
115 + +ACCOUNTNAME+" text not null , "
116 + +ACCOUNTTYPE+" text not null , primary key(" + ACCOUNTNAME + "," + ACCOUNTTYPE + ")) ";
117 + }
118 +
119 + public static final class CreateDB_PhoneInfo implements BaseColumns {
120 + public static final String TABLE_NAME = "PhoneInfo";
121 + public static final String PHONETYPE = "phonetype";
122 + public static final String SOFTWARENUMBER = "softwarenumber";
123 + public static final String PHONENUMBER = "phonenumber";
124 + public static final String SUBSCRIBERID = "subscriberid";
125 + public static final String ADID = "adid";
126 + public static final String CALLSTATE = "callstate";
127 + public static final String DATASTATE = "datastate";
128 + public static final String NETWORKTYPE = "networktype";
129 + public static final String NETWORKCOUNTRYISO = "networkcountryiso";
130 + public static final String SIMCOUNTRYISO = "simcountryiso";
131 + public static final String NETWORKOPERATER = "networkoperater";
132 + public static final String SIMOPERATOR = "simoperator";
133 + public static final String NETWORKOPERATORNAME = "networkoperatorname";
134 + public static final String SIMOPERATORNAME = "simoperatorname";
135 + public static final String SIMSERIALNUMBER = "simserialnumber";
136 + public static final String SIMSTATE = "simstate";
137 + public static final String ISNETWORKROMING = "isnetworkroming";
138 +
139 + public static final String _CREATE_PhoneInfo = "create table if not exists "+TABLE_NAME+"("
140 + +PHONETYPE+" int not null primary key, "
141 + +SOFTWARENUMBER+" text , "
142 + +PHONENUMBER+" text , "
143 + +SUBSCRIBERID+" text , "
144 + +ADID+" text , "
145 + +CALLSTATE+" int , "
146 + +DATASTATE+" int , "
147 + +NETWORKTYPE+" int , "
148 + +NETWORKCOUNTRYISO+" text , "
149 + +SIMCOUNTRYISO+" text , "
150 + +NETWORKOPERATER+" text , "
151 + +SIMOPERATOR+" text , "
152 + +NETWORKOPERATORNAME+" text , "
153 + +SIMOPERATORNAME+" text , "
154 + +SIMSERIALNUMBER+" text , "
155 + +SIMSTATE+" int , "
156 + +ISNETWORKROMING +" bool ) ";
157 + }
158 +}
1 +package com.example.dataextraction;
2 +
3 +
4 +import android.Manifest;
5 +import android.accounts.Account;
6 +import android.accounts.AccountManager;
7 +import android.app.Activity;
8 +import android.app.AppOpsManager;
9 +import android.app.usage.NetworkStats;
10 +import android.app.usage.NetworkStatsManager;
11 +import android.app.usage.UsageStats;
12 +import android.app.usage.UsageStatsManager;
13 +import android.content.ContentResolver;
14 +import android.content.Context;
15 +import android.content.Intent;
16 +import android.content.pm.ApplicationInfo;
17 +import android.content.pm.PackageInfo;
18 +import android.content.pm.PackageManager;
19 +import android.database.Cursor;
20 +import android.net.ConnectivityManager;
21 +import android.net.LinkAddress;
22 +import android.net.LinkProperties;
23 +import android.net.Network;
24 +import android.net.NetworkCapabilities;
25 +import android.net.RouteInfo;
26 +import android.net.Uri;
27 +import android.net.wifi.WifiConfiguration;
28 +import android.net.wifi.WifiManager;
29 +import android.os.Build;
30 +import android.os.Bundle;
31 +import android.os.Environment;
32 +import android.os.Handler;
33 +import android.provider.CalendarContract;
34 +import android.provider.CallLog;
35 +import android.provider.ContactsContract;
36 +import android.provider.MediaStore;
37 +import android.provider.Telephony;
38 +import android.telephony.TelephonyManager;
39 +import android.util.Log;
40 +import android.widget.Toast;
41 +
42 +import java.io.File;
43 +import java.net.InetAddress;
44 +import java.text.DateFormat;
45 +import java.text.SimpleDateFormat;
46 +import java.util.ArrayList;
47 +import java.util.Calendar;
48 +import java.util.Date;
49 +import java.util.LinkedList;
50 +import java.util.List;
51 +
52 +import androidx.annotation.NonNull;
53 +import androidx.core.content.ContextCompat;
54 +
55 +
56 +import com.google.gson.JsonObject;
57 +
58 +import org.json.JSONException;
59 +import org.json.JSONObject;
60 +
61 +import io.socket.client.IO;
62 +import io.socket.client.Socket;
63 +
64 +import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
65 +
66 +public class LoadingActivity extends Activity {
67 +
68 + private Socket socket;
69 + DBHelper dbHelper;
70 +
71 + String[] permission_list = {
72 + Manifest.permission.READ_EXTERNAL_STORAGE,
73 + Manifest.permission.WRITE_EXTERNAL_STORAGE,
74 + Manifest.permission.READ_CALENDAR,
75 + Manifest.permission.ACCESS_NETWORK_STATE,
76 + Manifest.permission.ACCESS_FINE_LOCATION,
77 + Manifest.permission.READ_PHONE_STATE,
78 + Manifest.permission.GET_ACCOUNTS,
79 + Manifest.permission.READ_CONTACTS,
80 + Manifest.permission.READ_CALL_LOG,
81 + Manifest.permission.READ_PHONE_NUMBERS,
82 + Manifest.permission.READ_CONTACTS,
83 + Manifest.permission.READ_CALL_LOG,
84 + Manifest.permission.READ_SMS,
85 + Manifest.permission.ACCESS_WIFI_STATE
86 + };
87 +
88 + @Override
89 + protected void onCreate(Bundle savedInstanceState) {
90 + super.onCreate(savedInstanceState);
91 + setContentView(R.layout.activity_loading);
92 +
93 +
94 + }
95 +
96 + @Override
97 + protected void onResume() {
98 + super.onResume();
99 +
100 + AppOpsManager appOps = (AppOpsManager) getSystemService(Context.APP_OPS_SERVICE);
101 + int mode = appOps.checkOpNoThrow(AppOpsManager.OPSTR_GET_USAGE_STATS, android.os.Process.myUid(), getPackageName());
102 + boolean granted = (mode == AppOpsManager.MODE_ALLOWED);
103 +
104 + if (granted == false)
105 + {
106 + Intent intent = new Intent(android.provider.Settings.ACTION_USAGE_ACCESS_SETTINGS);
107 + startActivity(intent);
108 + }
109 + else {
110 + if(checkPermission()) {
111 + try {
112 + socket = IO.socket("http://192.168.0.8:3000/");
113 + socket.connect();
114 + Log.i("SOCKET", "Connected");
115 +
116 + }catch(Exception e){
117 + e.printStackTrace();
118 + Log.i("SOCKET", "Not Connected");
119 + }
120 +
121 + startLoading();
122 + }
123 + }
124 + }
125 +
126 + public boolean checkPermission(){
127 + //현재 안드로이드 버전이 6.0미만이면 메서드를 종료한다.
128 + if(Build.VERSION.SDK_INT < Build.VERSION_CODES.M)
129 + return true;
130 +
131 + LinkedList<String> requestPerms = new LinkedList<>();
132 + for(String permission : permission_list){
133 + //권한 허용 여부를 확인한다.
134 + int chk = checkCallingOrSelfPermission(permission);
135 +
136 + if(chk == PackageManager.PERMISSION_DENIED){
137 + //권한 허용을여부를 확인하는 창을 띄운다
138 + requestPerms.add(permission);
139 + }
140 + }
141 +
142 + if(requestPerms.isEmpty())
143 + return true;
144 +
145 + requestPermissions(requestPerms.toArray(new String[0]),0);
146 + return false;
147 + }
148 +
149 + private void startLoading() {
150 + Handler handler = new Handler();
151 + handler.postDelayed(new Runnable() {
152 + @Override
153 + public void run() {
154 + dbHelper = new DBHelper(getApplicationContext());
155 + dbHelper.open();
156 +
157 + getPhoto();
158 + alert("alert","photo");
159 + Log.i("MYLOG", "DB HY Part:1/14");
160 + getVideo();
161 + alert("alert","video");
162 + Log.i("MYLOG", "DB HY Part:2/14");
163 + getAudio();
164 + alert("alert","audio");
165 + Log.i("MYLOG", "DB HY Part:3/14");
166 + getCalendarInfo();
167 + alert("alert","calendar");
168 + Log.i("MYLOG", "DB HY Part:4/14");
169 + getNetworkInfo();
170 + alert("alert","network");
171 + Log.i("MYLOG", "DB HY Part:5/14");
172 +
173 + getCallLog();
174 + alert("alert","calllog");
175 + Log.i("MYLOG", "DB YM Part:6/14");
176 + getContact();
177 + alert("alert","contact");
178 + Log.i("MYLOG", "DB YM Part:7/14");
179 + getSMSMessage();
180 + alert("alert","sms");
181 + Log.i("MYLOG", "DB YM Part:8/14");
182 + getWIFI();
183 + alert("alert","wifi");
184 + Log.i("MYLOG", "DB YM Part:9/14");
185 +
186 + getPhoneInfo();
187 + alert("alert","phoneinfo");
188 + Log.i("MYLOG", "DB YY Part:10/14");
189 + getAccountInfo();
190 + alert("alert","accountinfo");
191 + Log.i("MYLOG", "DB YY Part:11/14");
192 + getAppInfo();
193 + alert("alert","appinfo");
194 + Log.i("MYLOG", "DB YY Part:12/14");
195 + getUsageStats();
196 + alert("alert","usagestats");
197 + Log.i("MYLOG", "DB YY Part:13/14");
198 + getDocument();
199 + Log.i("MYLOG", "DB YY Part:14/14");
200 + dbHelper.close();
201 +
202 + finish();
203 + startActivity(new Intent(LoadingActivity.this, MainActivity.class));
204 +
205 + alert("end", "end");
206 +
207 + }
208 + }, 2000);
209 + }
210 +
211 + public void getDocument() {
212 +
213 + String[] projection = {
214 + MediaStore.Files.FileColumns._ID,
215 + MediaStore.Files.FileColumns.MIME_TYPE,
216 + MediaStore.Files.FileColumns.DATE_ADDED,
217 + MediaStore.Files.FileColumns.DATE_MODIFIED,
218 + MediaStore.Files.FileColumns.DISPLAY_NAME,
219 + MediaStore.Files.FileColumns.TITLE,
220 + MediaStore.Files.FileColumns.SIZE,
221 + MediaStore.Files.FileColumns.DATA
222 + };
223 +
224 + String mimeType = "application/pdf";
225 +
226 + String whereClause = MediaStore.Files.FileColumns.MIME_TYPE + " IN ('" + mimeType + "')"
227 + + " OR " + MediaStore.Files.FileColumns.MIME_TYPE + " LIKE 'application/vnd%'";
228 + String orderBy = MediaStore.Files.FileColumns.SIZE + " DESC";
229 + Cursor cursor = getContentResolver().query(MediaStore.Files.getContentUri("external"),
230 + projection,
231 + whereClause,
232 + null,
233 + orderBy);
234 +
235 + int idCol = cursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns._ID);
236 + int mimeCol = cursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.MIME_TYPE);
237 + int addedCol = cursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DATE_ADDED);
238 + int modifiedCol = cursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DATE_MODIFIED);
239 + int nameCol = cursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DISPLAY_NAME);
240 + int titleCol = cursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.TITLE);
241 + int sizeCol = cursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.SIZE);
242 + int dataCol = cursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DATA);
243 +
244 + if (cursor.moveToFirst()) {
245 + do {
246 + //Uri fileUri = Uri.withAppendedPath(MediaStore.Files.getContentUri("external"), cursor.getString(idCol));
247 + String mime = cursor.getString(mimeCol);
248 + long dateAdded = cursor.getLong(addedCol);
249 + long dateModified = cursor.getLong(modifiedCol);
250 + String name = cursor.getString(nameCol);
251 + String title = cursor.getString(titleCol);
252 + long size = cursor.getLong(sizeCol);
253 + String path = cursor.getString(dataCol);
254 +
255 + Log.i("documents", mime + ", " + dateAdded + ", " + dateModified + ", " + name + ", " + title + ", " + size + ", " + path);
256 + dbHelper.addDocumentInfo(cursor.getString(nameCol), cursor.getString(titleCol), cursor.getLong(addedCol)
257 + , cursor.getLong(modifiedCol), cursor.getString(mimeCol), cursor.getString(dataCol),String.valueOf(cursor.getLong(sizeCol)));
258 + } while (cursor.moveToNext());
259 + }
260 + }
261 +
262 + public void getPhoto() {
263 + Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
264 +
265 + String[] projection = new String[]{
266 + MediaStore.Images.Media.TITLE,
267 + MediaStore.Images.Media._ID,
268 + MediaStore.Images.Media.DATE_ADDED,
269 + MediaStore.Images.Media.DISPLAY_NAME,
270 + MediaStore.Images.Media.MIME_TYPE,
271 + MediaStore.Images.Media.DATA,
272 + MediaStore.Images.Media.LATITUDE,
273 + MediaStore.Images.Media.LONGITUDE
274 + };
275 + Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
276 +
277 +
278 + while (cursor.moveToNext()) {
279 + photoItem photo = new photoItem();
280 + photo.setTitle(cursor.getString(0));
281 + photo.setId(cursor.getInt(1));
282 + photo.setDate(cursor.getString(2));
283 + photo.setDisplayName(cursor.getString(3));
284 + photo.setType(cursor.getString(4));
285 + photo.setPath(cursor.getString(5));
286 + photo.setLatitude(cursor.getString(6));
287 + photo.setLongitude(cursor.getString(7));
288 +
289 +
290 + File f = new File(cursor.getString(5));
291 + long size = f.length();
292 +
293 + dbHelper.insertPColumn(photo.getTitle(), photo.getId(), photo.getDate()
294 + , photo.getDisplayName(), photo.getType(), photo.getPath()
295 + , photo.getLatitude(), photo.getLongitude(),String.valueOf(size));
296 + }
297 +
298 + }
299 +
300 + public void getVideo() {
301 + Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
302 +
303 + String[] projection = new String[]{
304 + MediaStore.Video.Media.ALBUM,
305 + MediaStore.Video.Media.ARTIST,
306 + MediaStore.Video.Media.BOOKMARK,
307 + MediaStore.Video.Media.CATEGORY,
308 + MediaStore.Video.Media.DESCRIPTION,
309 + MediaStore.Video.Media.LANGUAGE,
310 + MediaStore.Video.Media.LATITUDE,
311 + MediaStore.Video.Media.LONGITUDE,
312 + MediaStore.Video.Media.RESOLUTION,
313 + MediaStore.Video.Media.DATA,
314 + MediaStore.Video.Media.TAGS,
315 + MediaStore.Video.Media.DATE_ADDED,
316 + MediaStore.Video.Media.DISPLAY_NAME,
317 + MediaStore.Video.Media.MIME_TYPE,
318 + MediaStore.Video.Media.TITLE,
319 + };
320 +
321 + Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
322 +
323 + while (cursor.moveToNext()) {
324 + videoItem video = new videoItem();
325 +
326 + video.setAlbum(cursor.getString(0));
327 + video.setArtist(cursor.getString(1));
328 + video.setBookmark(cursor.getString(2));
329 + video.setCategory(cursor.getString(3));
330 + video.setDescription(cursor.getString(4));
331 + video.setLanguage(cursor.getString(5));
332 + video.setLatitude(cursor.getString(6));
333 + video.setLongitude(cursor.getString(7));
334 + video.setResolution(cursor.getString(8));
335 + video.setPath(cursor.getString(9));
336 + video.setTags(cursor.getString(10));
337 + video.setDate_added(cursor.getString(11));
338 + video.setDisplay_Name(cursor.getString(12));
339 + video.setMIME_type(cursor.getString(13));
340 + video.setTitle(cursor.getString(14));
341 +
342 + File f = new File(cursor.getString(9));
343 + long size = f.length();
344 +
345 + dbHelper.insertVColumn(video.getTitle(), video.getDate_added(), video.getDisplay_Name()
346 + , video.getMIME_type(), video.getPath(), video.getLatitude(), video.getLongitude()
347 + , video.getAlbum(), video.getArtist(), video.getBookmark(), video.getCategory()
348 + , video.getDescription(), video.getLanguage(), video.getResolution(), video.getTags(), String.valueOf(size));
349 + }
350 + }
351 +
352 + public void getAudio() {
353 + Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
354 +
355 + String[] projection = new String[]{
356 + MediaStore.Audio.Media.ALBUM,
357 + MediaStore.Audio.Media.ARTIST,
358 + MediaStore.Audio.Media.COMPOSER,
359 + MediaStore.Audio.Media.YEAR,
360 + MediaStore.Audio.Media.DATA,
361 + MediaStore.Audio.Media.DATE_ADDED,
362 + MediaStore.Audio.Media.MIME_TYPE,
363 + MediaStore.Audio.Media.SIZE,
364 + MediaStore.Audio.Media.TITLE,
365 + };
366 +
367 + Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
368 +
369 + while (cursor.moveToNext()) {
370 + audioItem audio = new audioItem();
371 + audio.setAlbum(cursor.getString(0));
372 + audio.setArtist(cursor.getString(1));
373 + audio.setComposer(cursor.getString(2));
374 + audio.setYear(cursor.getString(3));
375 + audio.setPath(cursor.getString(4));
376 + audio.setDate_added(cursor.getString(5));
377 + audio.setMIME_TYPE(cursor.getString(6));
378 + audio.setSize(cursor.getString(7));
379 + audio.setTitle(cursor.getString(8));
380 +
381 + dbHelper.insertAColumn(audio.getTitle(), audio.getDate_added(), audio.getMIME_TYPE()
382 + , audio.getPath(), audio.getAlbum(), audio.getArtist(), audio.getComposer()
383 + , audio.getYear(), audio.getSize());
384 + }
385 + }
386 +
387 + private void getCalendarInfo() {
388 + ArrayList<calendarItem> calendarList = new ArrayList<>();
389 +
390 + Cursor cur = null;
391 + ContentResolver cr = getContentResolver();
392 + Uri uri = CalendarContract.Calendars.CONTENT_URI;
393 +
394 + if (checkSelfPermission(Manifest.permission.READ_CALENDAR) != PackageManager.PERMISSION_GRANTED) {
395 + Toast.makeText(getApplicationContext(), "권한문제", Toast.LENGTH_LONG).show();
396 + return;
397 + }
398 +
399 + String[] event_projection = new String[]{
400 + CalendarContract.Calendars._ID, // 0
401 + CalendarContract.Calendars.ACCOUNT_NAME, // 1
402 + CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, // 2
403 + CalendarContract.Calendars.OWNER_ACCOUNT // 3
404 + };
405 +
406 + cur = cr.query(uri, event_projection, null, null, null);
407 +
408 + // Use the cursor to step through the returned records
409 + while (cur.moveToNext()) {
410 +
411 + long calID = 0;
412 + String displayName = null;
413 + String accountName = null;
414 + String ownerName = null;
415 +
416 + // Get the field values
417 + calID = cur.getLong(0);
418 + displayName = cur.getString(1);
419 + accountName = cur.getString(2);
420 + ownerName = cur.getString(3);
421 +
422 + Cursor cure = null;
423 + ContentResolver cre = getContentResolver();
424 + Uri urie = CalendarContract.Events.CONTENT_URI;
425 +
426 + String[] event_projection2 = new String[]{
427 + CalendarContract.Events.CALENDAR_ID, //0
428 + CalendarContract.Events.TITLE, // 2
429 + CalendarContract.Events.EVENT_LOCATION, // 3
430 + CalendarContract.Events.DESCRIPTION, // 4
431 + CalendarContract.Events.DTSTART, // 5
432 + CalendarContract.Events.DTEND, // 6
433 + CalendarContract.Events.DURATION, // 9
434 + CalendarContract.Events.ALL_DAY, // 10
435 + CalendarContract.Events.RRULE, // 11
436 + CalendarContract.Events.RDATE // 12
437 + };
438 +
439 + cure = cre.query(urie, event_projection2, null, null, null);
440 + while (cure.moveToNext()) {
441 + String calid = null;
442 + String title = null;
443 + String loc = null;
444 + String desc = null;
445 + long dtstart = 0;
446 + long dtend = 0;
447 + String duration = null;
448 + String all_day = null;
449 + String rrule = null;
450 + String rdate = null;
451 +
452 + calid = cure.getString(0);
453 + title = cure.getString(1);
454 + loc = cure.getString(2);
455 + desc = cure.getString(3);
456 + dtstart = cure.getLong(4);
457 + dtend = cure.getLong(5);
458 + duration = cure.getString(6);
459 + all_day = cure.getString(7);
460 + rrule = cure.getString(8);
461 + rdate = cure.getString(9);
462 +
463 + DateFormat timeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
464 + Date start = new Date(dtstart);
465 + Date end = new Date(dtend);
466 +
467 + //save
468 + if (calID == Integer.parseInt(calid)) {
469 + calendarItem calendar = new calendarItem();
470 +
471 + calendar.setCalID(Long.toString(calID));
472 + calendar.setDisplayName(displayName);
473 + calendar.setAccountName(accountName);
474 + calendar.setOwnerName(ownerName);
475 + calendar.setTitle(title);
476 + calendar.setLoc(loc);
477 + calendar.setDesc(desc);
478 + calendar.setDtstart(timeFormat.format(start));
479 + calendar.setDtend(timeFormat.format(end));
480 + calendar.setDuration(duration);
481 + calendar.setAllday(all_day);
482 + calendar.setRrule(rrule);
483 + calendar.setRdate(rdate);
484 +
485 + dbHelper.insertCColumn(calendar.getTitle(), calendar.getCalID(), calendar.getLoc()
486 + , calendar.getDesc(), calendar.getDtstart(), calendar.getDtend(), calendar.getDuration()
487 + , calendar.getAllday(), calendar.getDisplayName(), calendar.getAccountName()
488 + , calendar.getOwnerName(), calendar.getRrule(), calendar.getRdate());
489 + }
490 + }
491 + }
492 +
493 + }
494 +
495 + public void getNetworkInfo(){
496 + ConnectivityManager connectivityManager;
497 + LinkProperties linkProperties;
498 + connectivityManager = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
499 + Network[] networkList = connectivityManager.getAllNetworks();
500 + networkDBHelper dbNHelper = new networkDBHelper(getApplicationContext());
501 + dbNHelper.open();
502 + dbNHelper.deleteAllRows();
503 + for(Network network : networkList){
504 + NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(network);
505 + if(capabilities != null){
506 + if(capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)){
507 + linkProperties = connectivityManager.getLinkProperties(network);
508 + String domain = linkProperties.getDomains();
509 + String interfacrName = linkProperties.getInterfaceName();
510 + //String DnsServerName = linkProperties.getPrivateDnsServerName();
511 + dbNHelper.insertColumn0(network.toString(), domain, interfacrName);
512 + List<InetAddress> inetAddresses = linkProperties.getDnsServers();
513 + for(InetAddress address : inetAddresses){
514 + dbNHelper.insertColumn1(network.toString(), address.getHostAddress());
515 + }
516 + List<LinkAddress> linkAddresses = linkProperties.getLinkAddresses();
517 + for(LinkAddress address : linkAddresses) {
518 + dbNHelper.insertColumn2(network.toString(), address.getAddress().getHostAddress(), address.getPrefixLength());
519 + }
520 + List<RouteInfo> routeInfos = linkProperties.getRoutes();
521 + for(RouteInfo routeinfo : routeInfos){
522 + dbNHelper.insertColumn3(network.toString(), routeinfo.getDestination().toString()
523 + , routeinfo.getDestination().getPrefixLength(), routeinfo.getGateway().toString()
524 + ,routeinfo.getInterface());
525 + }
526 + }
527 + }
528 + }
529 + dbNHelper.close();
530 + }
531 +// private class GoogleAppIdTask extends AsyncTask<Void, Void, String> {
532 +// protected String doInBackground(final Void... params) {
533 +// String adId = null;
534 +// try {
535 +// AdvertisingIdClient.Info advertisingIdInfo = AdvertisingIdClient.getAdvertisingIdInfo(getApplicationContext());
536 +// adId = advertisingIdInfo.getId();
537 +// if (!advertisingIdInfo.isLimitAdTrackingEnabled())
538 +// Log.d("adid : ", adId);
539 +// } catch (IllegalStateException ex) {
540 +// ex.printStackTrace();
541 +// Log.e("GoogleAppidTask","IllegalStateException");
542 +// } catch (GooglePlayServicesRepairableException ex) {
543 +// ex.printStackTrace();
544 +// Log.e("GoogleAppidTask","GooglePlayServicesRepairable Exception");
545 +// } catch (IOException ex) {
546 +// ex.printStackTrace();
547 +// Log.e("GoogleAppidTask","IOException");
548 +// } catch (GooglePlayServicesNotAvailableException ex) {
549 +// ex.printStackTrace();
550 +// Log.e("GoogleAppidTask","GooglePlayServicesNotAvailableException");
551 +// }
552 +// return adId;
553 +// }
554 +//
555 +// protected void onPostExecute(String adId) {
556 +// //작업 수행
557 +// }
558 +// }
559 +
560 + public void getPhoneInfo(){
561 + TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
562 + if (checkSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
563 + Toast.makeText(getApplicationContext(), "권한문제", Toast.LENGTH_LONG).show();
564 + }
565 +
566 + String adid = "";
567 +// try {
568 +// MainActivity.GoogleAppIdTask asyncTask = new MainActivity.GoogleAppIdTask();
569 +// adid = asyncTask.execute().get();
570 +// }catch(Exception e){
571 +// e.printStackTrace();
572 +// }
573 +
574 + dbHelper.addPhoneInfo(tm.getPhoneType(), tm.getDeviceSoftwareVersion(),
575 + tm.getLine1Number(), tm.getSubscriberId(), adid, tm.getCallState(),
576 + tm.getDataState(),tm.getNetworkType(),tm.getNetworkCountryIso(),
577 + tm.getSimCountryIso(),tm.getNetworkOperator(),tm.getSimOperator(),
578 + tm.getNetworkOperatorName(),tm.getSimOperatorName() ,tm.getSimSerialNumber(),
579 + tm.getSimState(),tm.isNetworkRoaming());
580 +
581 +
582 + }
583 +
584 + public void getAccountInfo(){
585 +
586 + AccountManager am = AccountManager.get(this);
587 + Account[] accounts = am.getAccounts();
588 +
589 + for(Account account : accounts) {
590 + dbHelper.addAccountInfo(account.name, account.type);
591 + }
592 + }
593 +
594 + public void getAppInfo() {
595 +
596 + PackageManager pm = getPackageManager();
597 + List<PackageInfo> packages = pm.getInstalledPackages(PackageManager.GET_META_DATA);
598 + ApplicationInfo applicationInfo;
599 + NetworkStatsManager networkStatsManager = (NetworkStatsManager) getSystemService(Context.NETWORK_STATS_SERVICE);
600 +
601 +
602 + for (PackageInfo packageInfo : packages) {
603 + try {
604 + applicationInfo = pm.getApplicationInfo(packageInfo.packageName, 0);
605 + } catch (final PackageManager.NameNotFoundException e) {
606 + applicationInfo = null;
607 + }
608 + String applicationName = (String) (applicationInfo != null ? pm.getApplicationLabel(applicationInfo) : "(unknown)");
609 +
610 +
611 + NetworkStats wifinetworkStats = null;
612 + NetworkStats mobilenetworkStats = null;
613 + try {
614 + wifinetworkStats = networkStatsManager.queryDetailsForUid(NetworkCapabilities.TRANSPORT_WIFI, "", 0, System.currentTimeMillis(), applicationInfo.uid);
615 + } catch (Exception e) {
616 + wifinetworkStats = null;
617 + e.printStackTrace();
618 + }
619 + try {
620 + Context context = getApplicationContext();
621 + String subscribedId = getSubscriberId(TRANSPORT_CELLULAR);
622 + mobilenetworkStats = networkStatsManager.queryDetailsForUid(NetworkCapabilities.TRANSPORT_CELLULAR, subscribedId, 0, System.currentTimeMillis(), applicationInfo.uid);
623 + } catch (Exception e) {
624 + mobilenetworkStats = null;
625 + }
626 +
627 + NetworkStats.Bucket wifibucket = new NetworkStats.Bucket();
628 + long wifirxbytes = 0;
629 + long wifitxbytes = 0;
630 + while (wifinetworkStats.hasNextBucket()) {
631 + wifinetworkStats.getNextBucket(wifibucket);
632 + wifirxbytes += wifibucket.getRxBytes();
633 + wifitxbytes += wifibucket.getTxBytes();
634 + };
635 +
636 + NetworkStats.Bucket cellularbucket = new NetworkStats.Bucket();
637 + long cellrxbytes = 0;
638 + long celltxbytes = 0;
639 + while (mobilenetworkStats.hasNextBucket()) {
640 + mobilenetworkStats.getNextBucket(cellularbucket);
641 + cellrxbytes += cellularbucket.getRxBytes();
642 + celltxbytes += cellularbucket.getTxBytes();
643 + };
644 + mobilenetworkStats.getNextBucket(cellularbucket);
645 +
646 + dbHelper.addAppInfo(packageInfo.packageName,packageInfo.versionName, applicationName,packageInfo.firstInstallTime, packageInfo.lastUpdateTime, wifirxbytes+wifitxbytes, cellrxbytes+celltxbytes);
647 + }
648 +
649 + }
650 +
651 + private String getSubscriberId(int networkType) {
652 + TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
653 + if (checkSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
654 + Toast.makeText(getApplicationContext(), "권한문제", Toast.LENGTH_LONG).show();
655 + return null;
656 + }
657 + else {
658 + if (ConnectivityManager.TYPE_MOBILE == networkType) {
659 + return tm.getSubscriberId();
660 + }
661 + }
662 + return "";
663 + }
664 +
665 + public void getUsageStats() {
666 +
667 + UsageStatsManager usageStatsManager = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE);
668 +
669 + List<UsageStats> queryUsageStats = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_YEARLY, 0, System.currentTimeMillis());
670 + for (UsageStats usagestat : queryUsageStats) {
671 + dbHelper.addAppUsage_YEAR(usagestat.getPackageName(),usagestat.getFirstTimeStamp(), usagestat.getLastTimeStamp(),usagestat.getLastTimeUsed(), usagestat.getTotalTimeInForeground());
672 + }
673 +
674 + queryUsageStats = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_MONTHLY, 0, System.currentTimeMillis());
675 + for (UsageStats usagestat : queryUsageStats) {
676 + dbHelper.addAppUsage_MONTH(usagestat.getPackageName(),usagestat.getFirstTimeStamp(), usagestat.getLastTimeStamp(),usagestat.getLastTimeUsed(), usagestat.getTotalTimeInForeground());
677 + }
678 +
679 + queryUsageStats = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_WEEKLY, 0, System.currentTimeMillis());
680 + for (UsageStats usagestat : queryUsageStats) {
681 + dbHelper.addAppUsage_WEEK(usagestat.getPackageName(),usagestat.getFirstTimeStamp(), usagestat.getLastTimeStamp(),usagestat.getLastTimeUsed(), usagestat.getTotalTimeInForeground());
682 + }
683 + queryUsageStats = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, 0,
684 + System.currentTimeMillis());
685 + for (UsageStats usagestat : queryUsageStats) {
686 + dbHelper.addAppUsage_DAY(usagestat.getPackageName(),usagestat.getFirstTimeStamp(), usagestat.getLastTimeStamp(),usagestat.getLastTimeUsed(), usagestat.getTotalTimeInForeground());
687 + }
688 +
689 + }
690 +
691 +
692 + public void getCallLog(){
693 +
694 + int permissionCheck = ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.READ_CALL_LOG);
695 +
696 + Uri uri = CallLog.Calls.CONTENT_URI;
697 +
698 + if(permissionCheck == PackageManager.PERMISSION_GRANTED) {
699 + Cursor cursor = getBaseContext().getContentResolver().query(uri, null, null, null, CallLog.Calls.DEFAULT_SORT_ORDER);
700 +
701 + if(cursor.getCount() > 0){
702 + while(cursor.moveToNext()){
703 + //1:수신, 2:발신, 3:부재중
704 + String type = cursor.getString(cursor.getColumnIndex(CallLog.Calls.TYPE));
705 + //이름
706 + String name = cursor.getString(cursor.getColumnIndex(CallLog.Calls.CACHED_NAME));
707 + //번호
708 + String number = cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER));
709 + //통화시간
710 + String duration = cursor.getString(cursor.getColumnIndex(CallLog.Calls.DURATION));
711 + //날짜
712 + long date_long = cursor.getLong(cursor.getColumnIndex(CallLog.Calls.DATE));
713 + DateFormat timeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
714 + Date date = new Date(date_long);
715 +
716 + //db에 추가
717 + dbHelper.insertCallLogColumn(type, name, number, duration, timeFormat.format(date));
718 +
719 + }
720 + }
721 + }
722 + }
723 +
724 + public void getContact(){
725 + Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
726 +
727 + String[] projection = new String[]{
728 + ContactsContract.CommonDataKinds.Phone.NUMBER,
729 + ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
730 + ContactsContract.Contacts.PHOTO_ID,
731 + ContactsContract.Contacts._ID
732 + };
733 +
734 + String sortOrder = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
735 +
736 + Cursor cursor = getContentResolver().query(uri,projection,null,null,sortOrder);
737 +
738 + while (cursor.moveToNext()) {
739 + //전화번호
740 + String number = cursor.getString(0);
741 + //이름
742 + String name = cursor.getString(1);
743 + String photo_id = cursor.getString(2);
744 + String person_id = cursor.getString(3);
745 +
746 + //name, number 중복하는거 거르기
747 + //db에 추가
748 + dbHelper.insertContactColumn(number, name, photo_id, person_id);
749 + }
750 + }
751 +
752 + public void getSMSMessage(){
753 + Uri uri = Telephony.Sms.CONTENT_URI;
754 + String[] projection = new String[]{
755 + "type","_id","thread_id","address","person","creator","date","body","read"
756 + };
757 + Cursor cursor = getContentResolver().query(uri,projection, null,null,"date DESC");
758 +
759 + while (cursor.moveToNext()) {
760 + //Telephony.Sms.MESSAGE_TYPE_INBOX 받은 메시지/Telephony.Sms.MESSAGE_TYPE_SENT 보낸 메시지
761 + String type = cursor.getString(0);
762 + //메세지 id
763 + String mid = cursor.getString(1);
764 + //특정 사용자와 대화의 공통 id
765 + String tid = cursor.getString(2);
766 + //주소 번호
767 + String address = cursor.getString(3);
768 + //누가 보냈는지 contact
769 + //Telephony.Sms.MESSAGE_TYPE_INBOX only
770 + String person = cursor.getString(4);
771 + //Telephony.Sms.MESSAGE_TYPE_SENT only
772 + String creator = cursor.getString(5);
773 + //시간 ms
774 + Long date_long = cursor.getLong(6);
775 + DateFormat timeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
776 + String date = timeFormat.format(date_long);
777 + //내용
778 + String body = cursor.getString(7);
779 + //사용자가 메시지 읽었으면 1, 안 읽었으면 0
780 + String read = cursor.getString(8);
781 +
782 + //db에 추가
783 + dbHelper.insertSMSColumn(mid, tid, type, address, person, creator, date, body, read);
784 + }
785 + }
786 +
787 + public void getWIFI(){
788 + WifiManager wm = (WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE);
789 + //네트워크 설정 목록 획득
790 + List<WifiConfiguration> configurations = wm.getConfiguredNetworks();
791 + if(configurations != null){
792 + for(final WifiConfiguration config : configurations){
793 + //network id
794 + int i_id = config.networkId;
795 + String id = Integer.toString(i_id);
796 + //wifi 이름
797 + String ssid = config.SSID;
798 + //mac 주소
799 + String bssid = config.BSSID;
800 + //신호강도 (level)
801 + //연결 password
802 + String[] wepkeys = config.wepKeys;
803 +
804 + //db에 추가
805 + dbHelper.insertWifiColumn(id, ssid, bssid, wepkeys[0]);
806 + }
807 + }
808 + }
809 +
810 +
811 + public void alert(String type, String message){
812 +
813 + JsonObject alertJsonObject = new JsonObject();
814 + alertJsonObject.addProperty("comment", message);
815 + JSONObject jsonObject = null;
816 +
817 + try{
818 + jsonObject = new JSONObject(alertJsonObject.toString());
819 + }catch(JSONException e){
820 + e.printStackTrace();
821 + }
822 +
823 + socket.emit(type, jsonObject);
824 +
825 + }
826 +
827 +}
1 +package com.example.dataextraction;
2 +
3 +import androidx.annotation.NonNull;
4 +import androidx.appcompat.app.AppCompatActivity;
5 +import android.Manifest;
6 +import android.app.AppOpsManager;
7 +import android.content.Context;
8 +import android.content.Intent;
9 +import android.content.pm.PackageManager;
10 +import android.os.Build;
11 +import android.os.Bundle;
12 +import android.util.Log;
13 +
14 +import com.google.gson.JsonObject;
15 +import org.json.JSONException;
16 +import org.json.JSONObject;
17 +
18 +import java.util.LinkedList;
19 +
20 +import io.socket.client.IO;
21 +import io.socket.client.Socket;
22 +
23 +public class MainActivity extends AppCompatActivity {
24 +
25 + @Override
26 + protected void onCreate(Bundle savedInstanceState) {
27 + super.onCreate(savedInstanceState);
28 + setContentView(R.layout.activity_main);
29 + }
30 +}
1 +package com.example.dataextraction;
2 +
3 +import android.provider.BaseColumns;
4 +
5 +public final class MobileNetworkDataBase {
6 + public static final class CreateDB implements BaseColumns{
7 + public static final String NET_ID = "net_id";
8 + public static final String DOMAIN = "domain";
9 + public static final String INTERFACE_NAME = "interface_name";
10 + public static final String HOST_ADDRESS = "host_address";
11 + public static final String PREFIX_LENGTH = "prefix_length";
12 + public static final String DESTINATION = "destination";
13 + public static final String D_PREFIX = "d_prefix";
14 + public static final String GATEWAY = "gateway";
15 + public static final String _TABLENAME0 = "network_info";
16 + public static final String _TABLENAME1 = "inetAddress";
17 + public static final String _TABLENAME2 = "linkAddress";
18 + public static final String _TABLENAME3 = "routeinfo";
19 + public static final String _CREATE0 = "create table if not exists "
20 + +_TABLENAME0 + " ( "
21 + +NET_ID + " text not null, "
22 + +DOMAIN + " text, "
23 + +INTERFACE_NAME+ " text); ";
24 + public static final String _CREATE1 = "create table if not exists "
25 + +_TABLENAME1 + " ( "
26 + +NET_ID + " text not null, "
27 + +HOST_ADDRESS + " text not null, "
28 + +" constraint net_id_fk foreign key(net_id) references network_info);";
29 + public static final String _CREATE2 = "create table if not exists "
30 + +_TABLENAME2 + " ( "
31 + +NET_ID + " text not null, "
32 + +HOST_ADDRESS + " text not null, "
33 + +PREFIX_LENGTH+ " integer not null, "
34 + +" constraint net_id_fk foreign key(net_id) references network_info);";
35 + public static final String _CREATE3 = "create table if not exists "
36 + +_TABLENAME3+ " ( "
37 + +NET_ID+ " text not null, "
38 + +DESTINATION + " text not null, "
39 + +D_PREFIX + " integer not null, "
40 + +GATEWAY+ " text not null, "
41 + +INTERFACE_NAME + " text , "
42 + +" constraint net_id_fk foreign key(net_id) references network_info);";
43 +
44 + }
45 +}
1 +package com.example.dataextraction;
2 +
3 +import android.provider.BaseColumns;
4 +
5 +public final class PhotoDataBase {
6 + public static final class CreateDB implements BaseColumns {
7 + public static final String TITLE = "title";
8 + public static final String ID = "id";
9 + public static final String DATE_ADDED = "date_added";
10 + public static final String DISPLAY_NAME = "display_name";
11 + public static final String MIME_TYPE = "mime_type";
12 + public static final String PATH = "path";
13 + public static final String LATITUDE = "latitude";
14 + public static final String LONGITUDE = "longitude";
15 + public static final String SIZE = "size";
16 + public static final String _TABLENAME0 = "photo";
17 + public static final String _CREATE0 = "create table if not exists "+_TABLENAME0+"("
18 + +TITLE+" text not null primary key, "
19 + +ID+" integer not null , "
20 + +DATE_ADDED + " text not null,"
21 + +DISPLAY_NAME + " text not null,"
22 + +MIME_TYPE + " text not null,"
23 + +PATH + " text not null,"
24 + +LATITUDE + " text,"
25 + +LONGITUDE + " text,"
26 + +SIZE + " text);";
27 + }
28 +}
1 +package com.example.dataextraction;
2 +
3 +import android.provider.BaseColumns;
4 +
5 +public class SMSDataBase {
6 + public static final class CreateDB implements BaseColumns {
7 + public static final String MID = "mid";
8 + public static final String TID = "tid";
9 + public static final String TYPE = "type";
10 + public static final String ADDRESS = "address";
11 + public static final String PERSON = "person";
12 + public static final String CREATOR = "creator";
13 + public static final String DATE = "date";
14 + public static final String BODY = "body";
15 + public static final String READ_C = "read_c";
16 + public static final String _TABLENAME0 = "sms";
17 + public static final String _CREATE0 = "create table if not exists "+_TABLENAME0+"("
18 + +MID+" integer not null primary key, "
19 + +TID+" integer,"
20 + +TYPE + " integer,"
21 + +ADDRESS+" text,"
22 + +PERSON + " text,"
23 + +CREATOR+" text,"
24 + +DATE + " text,"
25 + +BODY + " text,"
26 + +READ_C + " integer);";
27 + }
28 +}
1 +package com.example.dataextraction;
2 +
3 +import android.provider.BaseColumns;
4 +
5 +public final class VideoDataBase {
6 + public static final class CreateDB implements BaseColumns {
7 + public static final String ALBUM = "album";
8 + public static final String ARTIST = "artist";
9 + public static final String BOOKMARK = "bookmark";
10 + public static final String CATEGORY = "category";
11 + public static final String DESCRIPTION = "description";
12 + public static final String LANGUAGE = "language";
13 + public static final String LATITUDE = "latitude";
14 + public static final String LONGITUDE = "longitude";
15 + public static final String RESOLUTION = "resolution";
16 + public static final String PATH = "path";
17 + public static final String TAGS = "tags";
18 + public static final String DATE_ADDED = "date_added";
19 + public static final String DISPLAY_NAME = "display_name";
20 + public static final String MIME_TYPE = "mime_type";
21 + public static final String TITLE = "title";
22 + public static final String SIZE = "size";
23 + public static final String _TABLENAME0 = "video";
24 + public static final String _CREATE0 = "create table if not exists "+_TABLENAME0+"("
25 + +TITLE+" text not null primary key, "
26 + +DATE_ADDED + " text not null ,"
27 + +DISPLAY_NAME + " text not null ,"
28 + +MIME_TYPE + " text not null ,"
29 + +PATH + " text not null ,"
30 + +LATITUDE + " text ,"
31 + +LONGITUDE + " text,"
32 + +ALBUM+ " text, "
33 + +ARTIST+ " text, "
34 + +BOOKMARK+ " text, "
35 + +CATEGORY + " text, "
36 + +DESCRIPTION + " text, "
37 + +LANGUAGE +" text, "
38 + +RESOLUTION + " text, "
39 + +TAGS + " text, "
40 + +SIZE+" text);";
41 + }
42 +}
1 +package com.example.dataextraction;
2 +
3 +import android.provider.BaseColumns;
4 +
5 +public class WifiDataBase {
6 + public static final class CreateDB implements BaseColumns {
7 + public static final String ID = "id";
8 + public static final String SSID = "ssid";
9 + public static final String BSSID = "bssid";
10 + public static final String WEPKEYS = "wepkeys";
11 + public static final String _TABLENAME0 = "wifi";
12 + public static final String _CREATE0 = "create table if not exists "+_TABLENAME0+"("
13 + +ID+" integer not null primary key, "
14 + +SSID+" text,"
15 + +BSSID + " text,"
16 + +WEPKEYS + " text);";
17 + }
18 +}
1 +package com.example.dataextraction;
2 +
3 +public class audioItem {
4 + String album, artist,composer,contentType, year, path, date_added,
5 + MIME_TYPE,size,title;
6 +
7 + public String getAlbum() {
8 + return album;
9 + }
10 + public String getArtist(){
11 + return artist;
12 + }
13 + public String getComposer(){
14 + return composer;
15 + }
16 + public String getContentType(){
17 + return contentType;
18 + }
19 + public String getYear(){
20 + return year;
21 + }
22 + public String getPath(){
23 + return path;
24 + }
25 + public String getDate_added(){
26 + return date_added;
27 + }
28 + public String getMIME_TYPE(){
29 + return MIME_TYPE;
30 + }
31 + public String getSize(){
32 + return size;
33 + }
34 +
35 + public String getTitle() {
36 + return title;
37 + }
38 +
39 + public void setPath(String path) {
40 + this.path = path;
41 + }
42 +
43 + public void setArtist(String artist) {
44 + this.artist = artist;
45 + }
46 +
47 + public void setDate_added(String date_added) {
48 + this.date_added = date_added;
49 + }
50 +
51 + public void setAlbum(String album) {
52 + this.album = album;
53 + }
54 +
55 + public void setComposer(String composer) {
56 + this.composer = composer;
57 + }
58 +
59 + public void setContentType(String contentType) {
60 + this.contentType = contentType;
61 + }
62 +
63 + public void setMIME_TYPE(String MIME_TYPE) {
64 + this.MIME_TYPE = MIME_TYPE;
65 + }
66 +
67 + public void setSize(String size) {
68 + this.size = size;
69 + }
70 +
71 + public void setYear(String year) {
72 + this.year = year;
73 + }
74 +
75 + public void setTitle(String title) {
76 + this.title = title;
77 + }
78 +}
1 +package com.example.dataextraction;
2 +
3 +import android.os.Parcel;
4 +import android.os.Parcelable;
5 +
6 +public class calendarItem implements Parcelable {
7 + String calID, displayName, accountName, ownerName, title, loc, desc, dtstart,
8 + dtend, duration, allday, rrule, rdate;
9 +
10 + public calendarItem(){}
11 + public calendarItem(Parcel in){
12 + this.calID=in.readString();
13 + this.displayName=in.readString();
14 + this.accountName=in.readString();
15 + this.ownerName=in.readString();
16 + this.title=in.readString();
17 + this.loc=in.readString();
18 + this.desc=in.readString();
19 + this.dtstart=in.readString();
20 + this.dtend=in.readString();
21 + this.duration=in.readString();
22 + this.allday=in.readString();
23 + this.rrule=in.readString();
24 + this.rdate=in.readString();
25 + }
26 +
27 + public String getCalID() {
28 + return calID;
29 + }
30 +
31 + public String getDisplayName() {
32 + return displayName;
33 + }
34 +
35 + public String getAccountName() {
36 + return accountName;
37 + }
38 +
39 + public String getOwnerName() {
40 + return ownerName;
41 + }
42 +
43 + public String getTitle() {
44 + return title;
45 + }
46 +
47 + public String getLoc() {
48 + return loc;
49 + }
50 +
51 + public String getDesc() {
52 + return desc;
53 + }
54 +
55 + public String getDtstart() {
56 + return dtstart;
57 + }
58 +
59 + public String getDtend() {
60 + return dtend;
61 + }
62 +
63 + public String getDuration() {
64 + return duration;
65 + }
66 +
67 + public String getAllday() {
68 + return allday;
69 + }
70 +
71 + public String getRrule() {
72 + return rrule;
73 + }
74 +
75 + public String getRdate() {
76 + return rdate;
77 + }
78 +
79 + public void setCalID(String calID) {
80 + this.calID = calID;
81 + }
82 +
83 + public void setDisplayName(String displayName) {
84 + this.displayName = displayName;
85 + }
86 +
87 + public void setAccountName(String accountName) {
88 + this.accountName = accountName;
89 + }
90 +
91 + public void setOwnerName(String ownerName) {
92 + this.ownerName = ownerName;
93 + }
94 +
95 + public void setDesc(String desc) {
96 + this.desc = desc;
97 + }
98 +
99 + public void setDtend(String dtend) {
100 + this.dtend = dtend;
101 + }
102 +
103 + public void setDtstart(String dtstart) {
104 + this.dtstart = dtstart;
105 + }
106 +
107 + public void setAllday(String allday) {
108 + this.allday = allday;
109 + }
110 +
111 + public void setDuration(String duration) {
112 + this.duration = duration;
113 + }
114 +
115 + public void setLoc(String loc) {
116 + this.loc = loc;
117 + }
118 +
119 + public void setTitle(String title) {
120 + this.title = title;
121 + }
122 +
123 + public void setRdate(String rdate) {
124 + this.rdate = rdate;
125 + }
126 +
127 + public void setRrule(String rrule) {
128 + this.rrule = rrule;
129 + }
130 +
131 + @Override
132 + public int describeContents() {
133 + return 0;
134 + }
135 +
136 + @Override
137 + public void writeToParcel(Parcel dest, int flags) {
138 + dest.writeString(this.calID);
139 + dest.writeString(this.displayName);
140 + dest.writeString(this.accountName);
141 + dest.writeString(this.ownerName);
142 + dest.writeString(this.title);
143 + dest.writeString(this.loc);
144 + dest.writeString(this.desc);
145 + dest.writeString(this.dtstart);
146 + dest.writeString(this.dtend);
147 + dest.writeString(this.duration);
148 + dest.writeString(this.allday);
149 + dest.writeString(this.rrule);
150 + dest.writeString(this.rdate);
151 + }
152 +
153 + @SuppressWarnings("rawtypes")
154 + public static final Creator CREATOR = new Creator() {
155 +
156 + @Override
157 + public calendarItem createFromParcel(Parcel in) {
158 + return new calendarItem(in);
159 + }
160 +
161 + @Override
162 + public calendarItem[] newArray(int size) {
163 + // TODO Auto-generated method stub
164 + return new calendarItem[size];
165 + }
166 + };
167 +}
1 +package com.example.dataextraction;
2 +
3 +import android.content.ContentValues;
4 +import android.content.Context;
5 +import android.database.SQLException;
6 +import android.database.sqlite.SQLiteDatabase;
7 +import android.database.sqlite.SQLiteOpenHelper;
8 +
9 +import androidx.annotation.Nullable;
10 +
11 +public class networkDBHelper {
12 + private static final String DATABASE_NAME = "networkDatabase.db";
13 + private static final int DATABASE_VERSION = 1;
14 + public static SQLiteDatabase mDB;
15 + private networkDBHelper.DatabaseHelper mDBHelper;
16 + private Context mCtx;
17 +
18 + private class DatabaseHelper extends SQLiteOpenHelper {
19 + public DatabaseHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
20 + super(context, name, factory, version);
21 + }
22 +
23 + @Override
24 + public void onCreate(SQLiteDatabase db) {
25 + db.execSQL(MobileNetworkDataBase.CreateDB._CREATE0);
26 + db.execSQL(MobileNetworkDataBase.CreateDB._CREATE1);
27 + db.execSQL(MobileNetworkDataBase.CreateDB._CREATE2);
28 + db.execSQL(MobileNetworkDataBase.CreateDB._CREATE3);
29 + }
30 +
31 + @Override
32 + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
33 + db.execSQL("DROP TABLE IF EXISTS " + MobileNetworkDataBase.CreateDB._TABLENAME0);
34 + db.execSQL("DROP TABLE IF EXISTS " + MobileNetworkDataBase.CreateDB._TABLENAME1);
35 + db.execSQL("DROP TABLE IF EXISTS " + MobileNetworkDataBase.CreateDB._TABLENAME2);
36 + db.execSQL("DROP TABLE IF EXISTS " + MobileNetworkDataBase.CreateDB._TABLENAME3);
37 + onCreate(db);
38 + }
39 + }
40 + public networkDBHelper(Context context){
41 + this.mCtx = context;
42 + }
43 +
44 + public networkDBHelper open() throws SQLException {
45 + mDBHelper = new networkDBHelper.DatabaseHelper(mCtx, DATABASE_NAME, null, DATABASE_VERSION);
46 + mDB = mDBHelper.getWritableDatabase();
47 + return this;
48 + }
49 +
50 + public void close(){
51 + mDB.close();
52 + }
53 +
54 + public long insertColumn0(String id, String domain, String interface_name){
55 + ContentValues values = new ContentValues();
56 + values.put(MobileNetworkDataBase.CreateDB.NET_ID, id);
57 + values.put(MobileNetworkDataBase.CreateDB.DOMAIN, domain);
58 + values.put(MobileNetworkDataBase.CreateDB.INTERFACE_NAME, interface_name);
59 + return mDB.insert(MobileNetworkDataBase.CreateDB._TABLENAME0, null, values);
60 + }
61 +
62 + public long insertColumn1(String id, String address){
63 + ContentValues values = new ContentValues();
64 + values.put(MobileNetworkDataBase.CreateDB.NET_ID, id);
65 + values.put(MobileNetworkDataBase.CreateDB.HOST_ADDRESS, address);
66 + return mDB.insert(MobileNetworkDataBase.CreateDB._TABLENAME1, null, values);
67 + }
68 +
69 + public long insertColumn2(String id, String address, int prefix){
70 + ContentValues values = new ContentValues();
71 + values.put(MobileNetworkDataBase.CreateDB.NET_ID, id);
72 + values.put(MobileNetworkDataBase.CreateDB.HOST_ADDRESS, address);
73 + values.put(MobileNetworkDataBase.CreateDB.PREFIX_LENGTH, prefix);
74 + return mDB.insert(MobileNetworkDataBase.CreateDB._TABLENAME2, null, values);
75 + }
76 +
77 + public long insertColumn3(String id, String dest, int prefix, String gateway, String interface_name){
78 + ContentValues values = new ContentValues();
79 + values.put(MobileNetworkDataBase.CreateDB.NET_ID, id);
80 + values.put(MobileNetworkDataBase.CreateDB.DESTINATION, dest);
81 + values.put(MobileNetworkDataBase.CreateDB.D_PREFIX, prefix);
82 + values.put(MobileNetworkDataBase.CreateDB.GATEWAY, gateway);
83 + values.put(MobileNetworkDataBase.CreateDB.INTERFACE_NAME, interface_name);
84 + return mDB.insert(MobileNetworkDataBase.CreateDB._TABLENAME3, null, values);
85 + }
86 +
87 + public void deleteAllRows(){
88 + mDB.delete(MobileNetworkDataBase.CreateDB._TABLENAME0, null, null);
89 + mDB.delete(MobileNetworkDataBase.CreateDB._TABLENAME1, null, null);
90 + mDB.delete(MobileNetworkDataBase.CreateDB._TABLENAME2, null, null);
91 + mDB.delete(MobileNetworkDataBase.CreateDB._TABLENAME3, null, null);
92 + }
93 +
94 +
95 +}
1 +package com.example.dataextraction;
2 +
3 +import android.graphics.Bitmap;
4 +import android.os.Parcel;
5 +import android.os.Parcelable;
6 +
7 +public class photoItem implements Parcelable {
8 + private int id;
9 + private String latitude, longitude,title,displayName,type,date,path;
10 + private byte bytes[];
11 + private Bitmap bitmap;
12 +
13 + public photoItem() {
14 + latitude = null;
15 + longitude = null;
16 + }
17 + public photoItem(Parcel in) {
18 + this.id = in.readInt();
19 + this.latitude = in.readString();
20 + this.longitude = in.readString();
21 + this.title = in.readString();
22 + this.displayName = in.readString();
23 + this.type = in.readString();
24 + this.date = in.readString();
25 + this.path = in.readString();
26 + //this.bytes = in.createByteArray();
27 + }
28 + public String getLatitude(){
29 + return latitude;
30 + }
31 + public String getLongitude(){
32 + return longitude;
33 + }
34 + public String getTitle(){
35 + return title;
36 + }
37 + public int getId(){
38 + return id;
39 + }
40 + public String getDisplayName(){
41 + return displayName;
42 + }
43 + public String getType(){
44 + return type;
45 + }
46 + public String getDate(){
47 + return date;
48 + }
49 + public String getPath() {
50 + return path;
51 + }
52 + public byte[] getBytes(){
53 + return bytes;
54 + }
55 + public Bitmap getBitmap(){
56 + return bitmap;
57 + }
58 +
59 + public void setLatitude(String lat){
60 + latitude = lat;
61 + }
62 + public void setLongitude(String longt){
63 + longitude = longt;
64 + }
65 + public void setTitle(String _t){
66 + title = _t;
67 + }
68 + public void setId(int _id){
69 + id = _id;
70 + }
71 + public void setDisplayName(String name){
72 + displayName = name;
73 + }
74 + public void setType(String _type){
75 + type = _type;
76 + }
77 + public void setDate(String d){
78 + date = d;
79 + }
80 + public void setPath(String p){
81 + path = p;
82 + }
83 + public void setBytes(byte[] b){
84 + bytes = b;
85 + }
86 + public void setBitmap(Bitmap b){
87 + bitmap = b;
88 + }
89 +
90 +
91 +
92 + @Override
93 + public int describeContents() {
94 + return 0;
95 + }
96 +
97 + @Override
98 + public void writeToParcel(Parcel dest, int flags) {
99 + dest.writeInt(this.id);
100 + dest.writeString(this.latitude);
101 + dest.writeString(this.longitude);
102 + dest.writeString(this.title);
103 + dest.writeString(this.displayName);
104 + dest.writeString(this.type);
105 + dest.writeString(this.date);
106 + dest.writeString(this.path);
107 + //dest.writeByteArray(this.bytes);
108 + }
109 +
110 + @SuppressWarnings("rawtypes")
111 + public static final Creator CREATOR = new Creator() {
112 +
113 + @Override
114 + public photoItem createFromParcel(Parcel in) {
115 + return new photoItem(in);
116 + }
117 +
118 + @Override
119 + public photoItem[] newArray(int size) {
120 + // TODO Auto-generated method stub
121 + return new photoItem[size];
122 + }
123 +
124 + };
125 +
126 +}
1 +package com.example.dataextraction;
2 +
3 +import android.os.Parcel;
4 +import android.os.Parcelable;
5 +
6 +public class videoItem implements Parcelable {
7 + String album, artist, bookmark, category, description, language
8 + , latitude, longitude, resolution, tags, path, date_added
9 + ,display_Name, MIME_type,title;
10 +
11 + public videoItem(){}
12 + public videoItem(Parcel in) {
13 + this.album = in.readString();
14 + this.artist = in.readString();
15 + this.bookmark = in.readString();
16 + this.category = in.readString();
17 + this.description = in.readString();
18 + this.latitude = in.readString();
19 + this.longitude = in.readString();
20 + this.resolution = in.readString();
21 + this.tags = in.readString();
22 + this.path = in.readString();
23 + this.date_added = in.readString();
24 + this.display_Name = in.readString();
25 + this.MIME_type = in.readString();
26 + }
27 + public String getAlbum() {
28 + return album;
29 + }
30 +
31 + public String getArtist() {
32 + return artist;
33 + }
34 +
35 + public String getBookmark() {
36 + return bookmark;
37 + }
38 +
39 + public String getCategory() {
40 + return category;
41 + }
42 +
43 + public String getDescription() {
44 + return description;
45 + }
46 +
47 + public String getLanguage(){
48 + return language;
49 + }
50 +
51 + public String getLongitude(){
52 + return longitude;
53 + }
54 +
55 + public String getResolution() {
56 + return resolution;
57 + }
58 +
59 + public String getPath() {
60 + return path;
61 + }
62 +
63 + public String getTags() {
64 + return tags;
65 + }
66 +
67 + public String getLatitude() {
68 + return latitude;
69 + }
70 +
71 + public String getDate_added() {
72 + return date_added;
73 + }
74 +
75 + public String getDisplay_Name() {
76 + return display_Name;
77 + }
78 +
79 + public String getMIME_type() {
80 + return MIME_type;
81 + }
82 +
83 + public String getTitle() {
84 + return title;
85 + }
86 +
87 + public void setAlbum(String album) {
88 + this.album = album;
89 + }
90 +
91 + public void setArtist(String artist) {
92 + this.artist = artist;
93 + }
94 +
95 + public void setBookmark(String bookmark) {
96 + this.bookmark = bookmark;
97 + }
98 +
99 + public void setCategory(String category) {
100 + this.category = category;
101 + }
102 +
103 + public void setDescription(String description) {
104 + this.description = description;
105 + }
106 +
107 + public void setLanguage(String language) {
108 + this.language = language;
109 + }
110 +
111 + public void setDate_added(String date_added) {
112 + this.date_added = date_added;
113 + }
114 +
115 + public void setLatitude(String latitude) {
116 + this.latitude = latitude;
117 + }
118 +
119 + public void setLongitude(String longitude) {
120 + this.longitude = longitude;
121 + }
122 +
123 + public void setDisplay_Name(String display_Name) {
124 + this.display_Name = display_Name;
125 + }
126 +
127 + public void setMIME_type(String MIME_type) {
128 + this.MIME_type = MIME_type;
129 + }
130 +
131 + public void setPath(String path) {
132 + this.path = path;
133 + }
134 +
135 + public void setResolution(String resolution) {
136 + this.resolution = resolution;
137 + }
138 +
139 + public void setTags(String tags) {
140 + this.tags = tags;
141 + }
142 +
143 + public void setTitle(String title) {
144 + this.title = title;
145 + }
146 +
147 + @Override
148 + public int describeContents() {
149 + return 0;
150 + }
151 +
152 + @Override
153 + public void writeToParcel(Parcel dest, int flags) {
154 + dest.writeString(this.album);
155 + dest.writeString(this.artist);
156 + dest.writeString(this.bookmark);
157 + dest.writeString(this.category);
158 + dest.writeString(this.description);
159 + dest.writeString(this.language);
160 + dest.writeString(this.latitude);
161 + dest.writeString(this.longitude);
162 + dest.writeString(this.resolution);
163 + dest.writeString(this.tags);
164 + dest.writeString(this.path);
165 + dest.writeString(this.date_added);
166 + dest.writeString(this.display_Name);
167 + dest.writeString(this.MIME_type);
168 + }
169 +
170 + @SuppressWarnings("rawtypes")
171 + public static final Creator CREATOR = new Creator() {
172 +
173 + @Override
174 + public videoItem createFromParcel(Parcel in) {
175 + return new videoItem(in);
176 + }
177 +
178 + @Override
179 + public videoItem[] newArray(int size) {
180 + // TODO Auto-generated method stub
181 + return new videoItem[size];
182 + }
183 + };
184 +}
1 +<vector xmlns:android="http://schemas.android.com/apk/res/android"
2 + xmlns:aapt="http://schemas.android.com/aapt"
3 + android:width="108dp"
4 + android:height="108dp"
5 + android:viewportWidth="108"
6 + android:viewportHeight="108">
7 + <path
8 + android:fillType="evenOdd"
9 + android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z"
10 + android:strokeWidth="1"
11 + android:strokeColor="#00000000">
12 + <aapt:attr name="android:fillColor">
13 + <gradient
14 + android:endX="78.5885"
15 + android:endY="90.9159"
16 + android:startX="48.7653"
17 + android:startY="61.0927"
18 + android:type="linear">
19 + <item
20 + android:color="#44000000"
21 + android:offset="0.0" />
22 + <item
23 + android:color="#00000000"
24 + android:offset="1.0" />
25 + </gradient>
26 + </aapt:attr>
27 + </path>
28 + <path
29 + android:fillColor="#FFFFFF"
30 + android:fillType="nonZero"
31 + android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z"
32 + android:strokeWidth="1"
33 + android:strokeColor="#00000000" />
34 +</vector>
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<vector xmlns:android="http://schemas.android.com/apk/res/android"
3 + android:width="108dp"
4 + android:height="108dp"
5 + android:viewportWidth="108"
6 + android:viewportHeight="108">
7 + <path
8 + android:fillColor="#008577"
9 + android:pathData="M0,0h108v108h-108z" />
10 + <path
11 + android:fillColor="#00000000"
12 + android:pathData="M9,0L9,108"
13 + android:strokeWidth="0.8"
14 + android:strokeColor="#33FFFFFF" />
15 + <path
16 + android:fillColor="#00000000"
17 + android:pathData="M19,0L19,108"
18 + android:strokeWidth="0.8"
19 + android:strokeColor="#33FFFFFF" />
20 + <path
21 + android:fillColor="#00000000"
22 + android:pathData="M29,0L29,108"
23 + android:strokeWidth="0.8"
24 + android:strokeColor="#33FFFFFF" />
25 + <path
26 + android:fillColor="#00000000"
27 + android:pathData="M39,0L39,108"
28 + android:strokeWidth="0.8"
29 + android:strokeColor="#33FFFFFF" />
30 + <path
31 + android:fillColor="#00000000"
32 + android:pathData="M49,0L49,108"
33 + android:strokeWidth="0.8"
34 + android:strokeColor="#33FFFFFF" />
35 + <path
36 + android:fillColor="#00000000"
37 + android:pathData="M59,0L59,108"
38 + android:strokeWidth="0.8"
39 + android:strokeColor="#33FFFFFF" />
40 + <path
41 + android:fillColor="#00000000"
42 + android:pathData="M69,0L69,108"
43 + android:strokeWidth="0.8"
44 + android:strokeColor="#33FFFFFF" />
45 + <path
46 + android:fillColor="#00000000"
47 + android:pathData="M79,0L79,108"
48 + android:strokeWidth="0.8"
49 + android:strokeColor="#33FFFFFF" />
50 + <path
51 + android:fillColor="#00000000"
52 + android:pathData="M89,0L89,108"
53 + android:strokeWidth="0.8"
54 + android:strokeColor="#33FFFFFF" />
55 + <path
56 + android:fillColor="#00000000"
57 + android:pathData="M99,0L99,108"
58 + android:strokeWidth="0.8"
59 + android:strokeColor="#33FFFFFF" />
60 + <path
61 + android:fillColor="#00000000"
62 + android:pathData="M0,9L108,9"
63 + android:strokeWidth="0.8"
64 + android:strokeColor="#33FFFFFF" />
65 + <path
66 + android:fillColor="#00000000"
67 + android:pathData="M0,19L108,19"
68 + android:strokeWidth="0.8"
69 + android:strokeColor="#33FFFFFF" />
70 + <path
71 + android:fillColor="#00000000"
72 + android:pathData="M0,29L108,29"
73 + android:strokeWidth="0.8"
74 + android:strokeColor="#33FFFFFF" />
75 + <path
76 + android:fillColor="#00000000"
77 + android:pathData="M0,39L108,39"
78 + android:strokeWidth="0.8"
79 + android:strokeColor="#33FFFFFF" />
80 + <path
81 + android:fillColor="#00000000"
82 + android:pathData="M0,49L108,49"
83 + android:strokeWidth="0.8"
84 + android:strokeColor="#33FFFFFF" />
85 + <path
86 + android:fillColor="#00000000"
87 + android:pathData="M0,59L108,59"
88 + android:strokeWidth="0.8"
89 + android:strokeColor="#33FFFFFF" />
90 + <path
91 + android:fillColor="#00000000"
92 + android:pathData="M0,69L108,69"
93 + android:strokeWidth="0.8"
94 + android:strokeColor="#33FFFFFF" />
95 + <path
96 + android:fillColor="#00000000"
97 + android:pathData="M0,79L108,79"
98 + android:strokeWidth="0.8"
99 + android:strokeColor="#33FFFFFF" />
100 + <path
101 + android:fillColor="#00000000"
102 + android:pathData="M0,89L108,89"
103 + android:strokeWidth="0.8"
104 + android:strokeColor="#33FFFFFF" />
105 + <path
106 + android:fillColor="#00000000"
107 + android:pathData="M0,99L108,99"
108 + android:strokeWidth="0.8"
109 + android:strokeColor="#33FFFFFF" />
110 + <path
111 + android:fillColor="#00000000"
112 + android:pathData="M19,29L89,29"
113 + android:strokeWidth="0.8"
114 + android:strokeColor="#33FFFFFF" />
115 + <path
116 + android:fillColor="#00000000"
117 + android:pathData="M19,39L89,39"
118 + android:strokeWidth="0.8"
119 + android:strokeColor="#33FFFFFF" />
120 + <path
121 + android:fillColor="#00000000"
122 + android:pathData="M19,49L89,49"
123 + android:strokeWidth="0.8"
124 + android:strokeColor="#33FFFFFF" />
125 + <path
126 + android:fillColor="#00000000"
127 + android:pathData="M19,59L89,59"
128 + android:strokeWidth="0.8"
129 + android:strokeColor="#33FFFFFF" />
130 + <path
131 + android:fillColor="#00000000"
132 + android:pathData="M19,69L89,69"
133 + android:strokeWidth="0.8"
134 + android:strokeColor="#33FFFFFF" />
135 + <path
136 + android:fillColor="#00000000"
137 + android:pathData="M19,79L89,79"
138 + android:strokeWidth="0.8"
139 + android:strokeColor="#33FFFFFF" />
140 + <path
141 + android:fillColor="#00000000"
142 + android:pathData="M29,19L29,89"
143 + android:strokeWidth="0.8"
144 + android:strokeColor="#33FFFFFF" />
145 + <path
146 + android:fillColor="#00000000"
147 + android:pathData="M39,19L39,89"
148 + android:strokeWidth="0.8"
149 + android:strokeColor="#33FFFFFF" />
150 + <path
151 + android:fillColor="#00000000"
152 + android:pathData="M49,19L49,89"
153 + android:strokeWidth="0.8"
154 + android:strokeColor="#33FFFFFF" />
155 + <path
156 + android:fillColor="#00000000"
157 + android:pathData="M59,19L59,89"
158 + android:strokeWidth="0.8"
159 + android:strokeColor="#33FFFFFF" />
160 + <path
161 + android:fillColor="#00000000"
162 + android:pathData="M69,19L69,89"
163 + android:strokeWidth="0.8"
164 + android:strokeColor="#33FFFFFF" />
165 + <path
166 + android:fillColor="#00000000"
167 + android:pathData="M79,19L79,89"
168 + android:strokeWidth="0.8"
169 + android:strokeColor="#33FFFFFF" />
170 +</vector>
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 + android:layout_width="match_parent"
4 + android:layout_height="match_parent"
5 + android:orientation="vertical">
6 + <TextView
7 + android:id="@+id/textView"
8 + android:layout_width="match_parent"
9 + android:layout_height="wrap_content"
10 + android:text="CapstoneDesign2" />
11 +</LinearLayout>
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 + xmlns:app="http://schemas.android.com/apk/res-auto"
4 + xmlns:tools="http://schemas.android.com/tools"
5 + android:layout_width="match_parent"
6 + android:layout_height="match_parent"
7 + tools:context=".MainActivity">
8 +
9 + <Button
10 + android:id="@+id/extraction_button"
11 + android:layout_width="200dp"
12 + android:layout_height="60dp"
13 + android:layout_gravity="center"
14 + android:text="데이터추출 완료"
15 + app:layout_constraintBottom_toBottomOf="parent"
16 + app:layout_constraintEnd_toEndOf="parent"
17 + app:layout_constraintHorizontal_bias="0.497"
18 + app:layout_constraintStart_toStartOf="parent"
19 + app:layout_constraintTop_toTopOf="parent"
20 + app:layout_constraintVertical_bias="0.661"
21 + tools:ignore="MissingConstraints" />
22 +
23 +</androidx.constraintlayout.widget.ConstraintLayout>
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
3 + <background android:drawable="@drawable/ic_launcher_background" />
4 + <foreground android:drawable="@drawable/ic_launcher_foreground" />
5 +</adaptive-icon>
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
3 + <background android:drawable="@drawable/ic_launcher_background" />
4 + <foreground android:drawable="@drawable/ic_launcher_foreground" />
5 +</adaptive-icon>
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<resources>
3 + <color name="colorPrimary">#008577</color>
4 + <color name="colorPrimaryDark">#00574B</color>
5 + <color name="colorAccent">#D81B60</color>
6 +</resources>
1 +<resources>
2 + <string name="app_name">DataExtraction</string>
3 +</resources>
1 +<resources>
2 +
3 + <!-- Base application theme. -->
4 + <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
5 + <!-- Customize your theme here. -->
6 + <item name="colorPrimary">@color/colorPrimary</item>
7 + <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
8 + <item name="colorAccent">@color/colorAccent</item>
9 + </style>
10 +
11 +</resources>
1 +package com.example.dataextraction;
2 +
3 +import org.junit.Test;
4 +
5 +import static org.junit.Assert.*;
6 +
7 +/**
8 + * Example local unit test, which will execute on the development machine (host).
9 + *
10 + * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
11 + */
12 +public class ExampleUnitTest {
13 + @Test
14 + public void addition_isCorrect() {
15 + assertEquals(4, 2 + 2);
16 + }
17 +}
...\ No newline at end of file ...\ No newline at end of file
1 +// Top-level build file where you can add configuration options common to all sub-projects/modules.
2 +
3 +buildscript {
4 + repositories {
5 + google()
6 + jcenter()
7 +
8 + }
9 + dependencies {
10 + classpath 'com.android.tools.build:gradle:3.5.0'
11 +
12 + // NOTE: Do not place your application dependencies here; they belong
13 + // in the individual module build.gradle files
14 + }
15 +}
16 +
17 +allprojects {
18 + repositories {
19 + google()
20 + jcenter()
21 +
22 + }
23 +}
24 +
25 +task clean(type: Delete) {
26 + delete rootProject.buildDir
27 +}
1 +# Project-wide Gradle settings.
2 +# IDE (e.g. Android Studio) users:
3 +# Gradle settings configured through the IDE *will override*
4 +# any settings specified in this file.
5 +# For more details on how to configure your build environment visit
6 +# http://www.gradle.org/docs/current/userguide/build_environment.html
7 +# Specifies the JVM arguments used for the daemon process.
8 +# The setting is particularly useful for tweaking memory settings.
9 +org.gradle.jvmargs=-Xmx1536m
10 +# When configured, Gradle will run in incubating parallel mode.
11 +# This option should only be used with decoupled projects. More details, visit
12 +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 +# org.gradle.parallel=true
14 +# AndroidX package structure to make it clearer which packages are bundled with the
15 +# Android operating system, and which are packaged with your app's APK
16 +# https://developer.android.com/topic/libraries/support-library/androidx-rn
17 +android.useAndroidX=true
18 +# Automatically convert third-party libraries to use AndroidX
19 +android.enableJetifier=true
20 +
No preview for this file type
1 +#Mon Apr 13 15:36:16 KST 2020
2 +distributionBase=GRADLE_USER_HOME
3 +distributionPath=wrapper/dists
4 +zipStoreBase=GRADLE_USER_HOME
5 +zipStorePath=wrapper/dists
6 +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
1 +#!/usr/bin/env sh
2 +
3 +##############################################################################
4 +##
5 +## Gradle start up script for UN*X
6 +##
7 +##############################################################################
8 +
9 +# Attempt to set APP_HOME
10 +# Resolve links: $0 may be a link
11 +PRG="$0"
12 +# Need this for relative symlinks.
13 +while [ -h "$PRG" ] ; do
14 + ls=`ls -ld "$PRG"`
15 + link=`expr "$ls" : '.*-> \(.*\)$'`
16 + if expr "$link" : '/.*' > /dev/null; then
17 + PRG="$link"
18 + else
19 + PRG=`dirname "$PRG"`"/$link"
20 + fi
21 +done
22 +SAVED="`pwd`"
23 +cd "`dirname \"$PRG\"`/" >/dev/null
24 +APP_HOME="`pwd -P`"
25 +cd "$SAVED" >/dev/null
26 +
27 +APP_NAME="Gradle"
28 +APP_BASE_NAME=`basename "$0"`
29 +
30 +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
31 +DEFAULT_JVM_OPTS=""
32 +
33 +# Use the maximum available, or set MAX_FD != -1 to use that value.
34 +MAX_FD="maximum"
35 +
36 +warn () {
37 + echo "$*"
38 +}
39 +
40 +die () {
41 + echo
42 + echo "$*"
43 + echo
44 + exit 1
45 +}
46 +
47 +# OS specific support (must be 'true' or 'false').
48 +cygwin=false
49 +msys=false
50 +darwin=false
51 +nonstop=false
52 +case "`uname`" in
53 + CYGWIN* )
54 + cygwin=true
55 + ;;
56 + Darwin* )
57 + darwin=true
58 + ;;
59 + MINGW* )
60 + msys=true
61 + ;;
62 + NONSTOP* )
63 + nonstop=true
64 + ;;
65 +esac
66 +
67 +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
68 +
69 +# Determine the Java command to use to start the JVM.
70 +if [ -n "$JAVA_HOME" ] ; then
71 + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
72 + # IBM's JDK on AIX uses strange locations for the executables
73 + JAVACMD="$JAVA_HOME/jre/sh/java"
74 + else
75 + JAVACMD="$JAVA_HOME/bin/java"
76 + fi
77 + if [ ! -x "$JAVACMD" ] ; then
78 + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
79 +
80 +Please set the JAVA_HOME variable in your environment to match the
81 +location of your Java installation."
82 + fi
83 +else
84 + JAVACMD="java"
85 + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
86 +
87 +Please set the JAVA_HOME variable in your environment to match the
88 +location of your Java installation."
89 +fi
90 +
91 +# Increase the maximum file descriptors if we can.
92 +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
93 + MAX_FD_LIMIT=`ulimit -H -n`
94 + if [ $? -eq 0 ] ; then
95 + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
96 + MAX_FD="$MAX_FD_LIMIT"
97 + fi
98 + ulimit -n $MAX_FD
99 + if [ $? -ne 0 ] ; then
100 + warn "Could not set maximum file descriptor limit: $MAX_FD"
101 + fi
102 + else
103 + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
104 + fi
105 +fi
106 +
107 +# For Darwin, add options to specify how the application appears in the dock
108 +if $darwin; then
109 + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
110 +fi
111 +
112 +# For Cygwin, switch paths to Windows format before running java
113 +if $cygwin ; then
114 + APP_HOME=`cygpath --path --mixed "$APP_HOME"`
115 + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
116 + JAVACMD=`cygpath --unix "$JAVACMD"`
117 +
118 + # We build the pattern for arguments to be converted via cygpath
119 + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
120 + SEP=""
121 + for dir in $ROOTDIRSRAW ; do
122 + ROOTDIRS="$ROOTDIRS$SEP$dir"
123 + SEP="|"
124 + done
125 + OURCYGPATTERN="(^($ROOTDIRS))"
126 + # Add a user-defined pattern to the cygpath arguments
127 + if [ "$GRADLE_CYGPATTERN" != "" ] ; then
128 + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
129 + fi
130 + # Now convert the arguments - kludge to limit ourselves to /bin/sh
131 + i=0
132 + for arg in "$@" ; do
133 + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
134 + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
135 +
136 + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
137 + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
138 + else
139 + eval `echo args$i`="\"$arg\""
140 + fi
141 + i=$((i+1))
142 + done
143 + case $i in
144 + (0) set -- ;;
145 + (1) set -- "$args0" ;;
146 + (2) set -- "$args0" "$args1" ;;
147 + (3) set -- "$args0" "$args1" "$args2" ;;
148 + (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
149 + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
150 + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
151 + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
152 + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
153 + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
154 + esac
155 +fi
156 +
157 +# Escape application args
158 +save () {
159 + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
160 + echo " "
161 +}
162 +APP_ARGS=$(save "$@")
163 +
164 +# Collect all arguments for the java command, following the shell quoting and substitution rules
165 +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
166 +
167 +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
168 +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
169 + cd "$(dirname "$0")"
170 +fi
171 +
172 +exec "$JAVACMD" "$@"
1 +@if "%DEBUG%" == "" @echo off
2 +@rem ##########################################################################
3 +@rem
4 +@rem Gradle startup script for Windows
5 +@rem
6 +@rem ##########################################################################
7 +
8 +@rem Set local scope for the variables with windows NT shell
9 +if "%OS%"=="Windows_NT" setlocal
10 +
11 +set DIRNAME=%~dp0
12 +if "%DIRNAME%" == "" set DIRNAME=.
13 +set APP_BASE_NAME=%~n0
14 +set APP_HOME=%DIRNAME%
15 +
16 +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
17 +set DEFAULT_JVM_OPTS=
18 +
19 +@rem Find java.exe
20 +if defined JAVA_HOME goto findJavaFromJavaHome
21 +
22 +set JAVA_EXE=java.exe
23 +%JAVA_EXE% -version >NUL 2>&1
24 +if "%ERRORLEVEL%" == "0" goto init
25 +
26 +echo.
27 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 +echo.
29 +echo Please set the JAVA_HOME variable in your environment to match the
30 +echo location of your Java installation.
31 +
32 +goto fail
33 +
34 +:findJavaFromJavaHome
35 +set JAVA_HOME=%JAVA_HOME:"=%
36 +set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 +
38 +if exist "%JAVA_EXE%" goto init
39 +
40 +echo.
41 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 +echo.
43 +echo Please set the JAVA_HOME variable in your environment to match the
44 +echo location of your Java installation.
45 +
46 +goto fail
47 +
48 +:init
49 +@rem Get command-line arguments, handling Windows variants
50 +
51 +if not "%OS%" == "Windows_NT" goto win9xME_args
52 +
53 +:win9xME_args
54 +@rem Slurp the command line arguments.
55 +set CMD_LINE_ARGS=
56 +set _SKIP=2
57 +
58 +:win9xME_args_slurp
59 +if "x%~1" == "x" goto execute
60 +
61 +set CMD_LINE_ARGS=%*
62 +
63 +:execute
64 +@rem Setup the command line
65 +
66 +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
67 +
68 +@rem Execute Gradle
69 +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
70 +
71 +:end
72 +@rem End local scope for the variables with windows NT shell
73 +if "%ERRORLEVEL%"=="0" goto mainEnd
74 +
75 +:fail
76 +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
77 +rem the _cmd.exe /c_ return code!
78 +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
79 +exit /b 1
80 +
81 +:mainEnd
82 +if "%OS%"=="Windows_NT" endlocal
83 +
84 +:omega
1 +include ':app'
2 +rootProject.name='DataExtraction'