/xray-refine-mobile

A Demo Mobile app for X-Ray Refine

Primary LanguageJavaApache License 2.0Apache-2.0

RefineMobile 🔮

A Demo Mobile app for X-Ray Refine. This application complies a model of the apps installed on a phone that consists of Usage statistics as well as 3rd party data requested from SOCIAM's App Observatory. It provides the users with the opportunity to investigate their exposure to 3rd parties, whilst providing the chance to see how alternative applications may change and improve their exposure to data sharing practices.

Project Structure 🌌

A somewhat typical app structure, there are 3 main activities at the moment, as well as some supporting Layouts. There are also additional Java Classes used to provide some structure to the app, including an AppDataModel and XRayJsonReader.

Main Activities/Views.

MainActivity: is where the app goes to when it has finished loading and retrieving app data from the phone and XRay API.

ListApplications: Is an intermediate activity that provides a searchable list of all apps installed on the user's Phone.

AppDetailView: An activity used to provide a detailed view on the selected app, including usage stats and host information.

Supporting Activities/Views

splash_screen: A layout used as a splash screen with the MainActivity.

nav_header/drawer_menu: Layouts used with MainActivity to form a nav menu

Additional Classes

AppDataModel: Singleton class that holds all app data used throughout the app. Primarily consists of 3 HashMap objects, each using an App's Package Name as the key. The 3 hash maps are xRayApps, allPhoneAppInfos, trackedPhoneAppInfos

XRayJsonReader: The XRay App observatory is implemented as a REST API only supporting JSON. This JsonReader provides methods for parsing a Json response from an API Query.

AppInfo: A soon to be Deprecated class used to hold app info retrieved from the User's phone and not from the XRay API. Will be replaced with XRayApp.

XRayApp: A data class holding app information requested from the XRay API. Uses XRayAppStoreInfo to hold the store info data requested for an app from the XRay API. Note: This class will replace the AppInfo class.

API Requests 📡

API Requests are currently using Cached data located at negi.io. The string used to indicate where the app should direct requests is in the string.xml file. To change where the app requests data from, edit the xray_apps entry

<string name="xray_apps">https://negi.io/api/apps</string>

App Screenshots 📱

Graph of All Hosts and exposure based on App Usage Times

App inspection page

List of apps on user's phone

Filtered list of apps on user's phpne

App loading screen

App Permissions/preferences page

App substitution page

Study Agreement Window

App Nav menu

Graphs and Visualisations 📊

Graphs for this project are implemented using MPAndroidChart, an Open Source (Apache 2.0) plotting library for Android.

License 📄

Copyright 2018 Adam Slack

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.