diff --git a/Patches/LineageOS-14.1/android_packages_apps_CMParts/0001-Remove_Analytics.patch b/Patches/LineageOS-14.1/android_packages_apps_CMParts/0001-Remove_Analytics.patch index d4d88840..f5931c37 100644 --- a/Patches/LineageOS-14.1/android_packages_apps_CMParts/0001-Remove_Analytics.patch +++ b/Patches/LineageOS-14.1/android_packages_apps_CMParts/0001-Remove_Analytics.patch @@ -1,39 +1,23 @@ -From 526dadc1170fb3deea60fd3d2e93ab62e54a00ab Mon Sep 17 00:00:00 2001 +From 911b31c6e3cf5783d047de59a085de369ebf5779 Mon Sep 17 00:00:00 2001 From: Tad -Date: Tue, 17 Jan 2017 18:04:09 -0500 -Subject: [PATCH] Remove stats +Date: Wed, 8 Feb 2017 15:05:02 -0500 +Subject: [PATCH] Remove analytics -Change-Id: If22fca4b2b641f8b68247ece20441b5cc7724709 +Change-Id: Ic01c97d6ceac8d324609763973639b41b4581a76 --- - AndroidManifest.xml | 25 --- - proguard.flags | 1 - - res/values/config.xml | 3 - - res/values/strings.xml | 22 --- - res/xml/anonymous_stats.xml | 32 ---- - res/xml/parts_catalog.xml | 5 - - res/xml/preview_data.xml | 52 ------ - res/xml/privacy_settings.xml | 8 - - .../cmparts/cmstats/AnonymousStats.java | 73 -------- - .../cyanogenmod/cmparts/cmstats/PreviewData.java | 49 ----- - .../cmparts/cmstats/ReportingService.java | 82 --------- - .../cmparts/cmstats/ReportingServiceManager.java | 109 ----------- - .../cmparts/cmstats/StatsUploadJobService.java | 205 --------------------- - src/org/cyanogenmod/cmparts/cmstats/Utilities.java | 102 ---------- - 14 files changed, 768 deletions(-) - delete mode 100644 res/xml/anonymous_stats.xml - delete mode 100644 res/xml/preview_data.xml - delete mode 100644 src/org/cyanogenmod/cmparts/cmstats/AnonymousStats.java - delete mode 100644 src/org/cyanogenmod/cmparts/cmstats/PreviewData.java - delete mode 100644 src/org/cyanogenmod/cmparts/cmstats/ReportingService.java - delete mode 100644 src/org/cyanogenmod/cmparts/cmstats/ReportingServiceManager.java - delete mode 100644 src/org/cyanogenmod/cmparts/cmstats/StatsUploadJobService.java - delete mode 100644 src/org/cyanogenmod/cmparts/cmstats/Utilities.java + AndroidManifest.xml | 25 ------------------------- + proguard.flags | 1 - + res/values/config.xml | 3 --- + res/values/strings.xml | 22 ---------------------- + res/xml/parts_catalog.xml | 5 ----- + res/xml/privacy_settings.xml | 8 -------- + 6 files changed, 64 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml -index d4f37a2..a574d98 100644 +index 3c58c3f..914a9df 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml -@@ -180,31 +180,6 @@ +@@ -183,31 +183,6 @@ android:value="status_bar_settings" /> @@ -66,7 +50,7 @@ index d4f37a2..a574d98 100644 true diff --git a/res/values/strings.xml b/res/values/strings.xml -index 3037cdd..79988d6 100644 +index c13655e..6891213 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml -@@ -483,28 +483,6 @@ +@@ -482,28 +482,6 @@ Total commits: %2$s

Last update: %3$s]]> @@ -119,54 +103,16 @@ index 3037cdd..79988d6 100644 - Country - Carrier - Stats collection -- When enabled, allows metrics collection +- Allow installation metrics and device statistics to be collected - Auto-rotate screen Rotation settings -diff --git a/res/xml/anonymous_stats.xml b/res/xml/anonymous_stats.xml -deleted file mode 100644 -index b29885c..0000000 ---- a/res/xml/anonymous_stats.xml -+++ /dev/null -@@ -1,32 +0,0 @@ -- -- -- -- -- -- -- -- -- -- diff --git a/res/xml/parts_catalog.xml b/res/xml/parts_catalog.xml -index 07329d9..649e808 100644 +index 71328eb..347f8e2 100644 --- a/res/xml/parts_catalog.xml +++ b/res/xml/parts_catalog.xml -@@ -73,11 +73,6 @@ +@@ -74,11 +74,6 @@ android:fragment="org.cyanogenmod.cmparts.statusbar.StatusBarSettings" cm:xmlRes="@xml/status_bar_settings" /> @@ -178,64 +124,6 @@ index 07329d9..649e808 100644 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- diff --git a/res/xml/privacy_settings.xml b/res/xml/privacy_settings.xml index 5ae923a..45df2a1 100644 --- a/res/xml/privacy_settings.xml @@ -253,662 +141,6 @@ index 5ae923a..45df2a1 100644 - - -diff --git a/src/org/cyanogenmod/cmparts/cmstats/AnonymousStats.java b/src/org/cyanogenmod/cmparts/cmstats/AnonymousStats.java -deleted file mode 100644 -index 3a6669d..0000000 ---- a/src/org/cyanogenmod/cmparts/cmstats/AnonymousStats.java -+++ /dev/null -@@ -1,73 +0,0 @@ --/* -- * Copyright (C) 2015 The CyanogenMod Project -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --package org.cyanogenmod.cmparts.cmstats; -- --import android.content.Context; --import android.content.SharedPreferences; --import android.os.Bundle; -- --import org.cyanogenmod.cmparts.R; --import org.cyanogenmod.cmparts.SettingsPreferenceFragment; -- --public class AnonymousStats extends SettingsPreferenceFragment { -- -- private static final String PREF_FILE_NAME = "CMStats"; -- /* package */ static final String ANONYMOUS_OPT_IN = "pref_anonymous_opt_in"; -- /* package */ static final String ANONYMOUS_LAST_CHECKED = "pref_anonymous_checked_in"; -- -- /* package */ static final String KEY_LAST_JOB_ID = "last_job_id"; -- /* package */ static final int QUEUE_MAX_THRESHOLD = 1000; -- -- public static SharedPreferences getPreferences(Context context) { -- return context.getSharedPreferences(PREF_FILE_NAME, 0); -- } -- -- @Override -- public void onCreate(Bundle savedInstanceState) { -- super.onCreate(savedInstanceState); -- addPreferencesFromResource(R.xml.anonymous_stats); -- } -- -- public static void updateLastSynced(Context context) { -- getPreferences(context) -- .edit() -- .putLong(ANONYMOUS_LAST_CHECKED,System.currentTimeMillis()) -- .commit(); -- } -- -- private static int getLastJobId(Context context) { -- return getPreferences(context).getInt(KEY_LAST_JOB_ID, 0); -- } -- -- private static void setLastJobId(Context context, int id) { -- getPreferences(context) -- .edit() -- .putInt(KEY_LAST_JOB_ID, id) -- .commit(); -- } -- -- public static int getNextJobId(Context context) { -- int lastId = getLastJobId(context); -- if (lastId >= QUEUE_MAX_THRESHOLD) { -- lastId = 1; -- } else { -- lastId += 1; -- } -- setLastJobId(context, lastId); -- return lastId; -- } --} -diff --git a/src/org/cyanogenmod/cmparts/cmstats/PreviewData.java b/src/org/cyanogenmod/cmparts/cmstats/PreviewData.java -deleted file mode 100644 -index a14f76b..0000000 ---- a/src/org/cyanogenmod/cmparts/cmstats/PreviewData.java -+++ /dev/null -@@ -1,49 +0,0 @@ --/* -- * Copyright (C) 2012 The CyanogenMod Project -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --package org.cyanogenmod.cmparts.cmstats; -- --import android.content.Context; --import android.os.Bundle; --import android.support.v7.preference.Preference; --import android.support.v7.preference.PreferenceScreen; -- --import org.cyanogenmod.cmparts.R; --import org.cyanogenmod.cmparts.SettingsPreferenceFragment; -- --public class PreviewData extends SettingsPreferenceFragment { -- private static final String UNIQUE_ID = "preview_id"; -- private static final String DEVICE = "preview_device"; -- private static final String VERSION = "preview_version"; -- private static final String COUNTRY = "preview_country"; -- private static final String CARRIER = "preview_carrier"; -- -- @Override -- public void onCreate(Bundle savedInstanceState) { -- super.onCreate(savedInstanceState); -- -- addPreferencesFromResource(R.xml.preview_data); -- -- final PreferenceScreen prefSet = getPreferenceScreen(); -- final Context context = getActivity(); -- -- prefSet.findPreference(UNIQUE_ID).setSummary(Utilities.getUniqueID(context)); -- prefSet.findPreference(DEVICE).setSummary(Utilities.getDevice()); -- prefSet.findPreference(VERSION).setSummary(Utilities.getModVersion()); -- prefSet.findPreference(COUNTRY).setSummary(Utilities.getCountryCode(context)); -- prefSet.findPreference(CARRIER).setSummary(Utilities.getCarrier(context)); -- } --} -diff --git a/src/org/cyanogenmod/cmparts/cmstats/ReportingService.java b/src/org/cyanogenmod/cmparts/cmstats/ReportingService.java -deleted file mode 100644 -index d1cd8e6..0000000 ---- a/src/org/cyanogenmod/cmparts/cmstats/ReportingService.java -+++ /dev/null -@@ -1,82 +0,0 @@ --/* -- * Copyright (C) 2015 The CyanogenMod Project -- * (C) 2017 The LineageOS Project -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --package org.cyanogenmod.cmparts.cmstats; -- --import android.app.IntentService; --import android.app.job.JobInfo; --import android.app.job.JobScheduler; --import android.content.ComponentName; --import android.content.Context; --import android.content.Intent; --import android.os.PersistableBundle; --import android.os.UserHandle; --import android.util.Log; --import cyanogenmod.providers.CMSettings; -- --import java.util.List; -- --public class ReportingService extends IntentService { -- /* package */ static final String TAG = "CMStats"; -- private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); -- -- public ReportingService() { -- super(ReportingService.class.getSimpleName()); -- } -- -- @Override -- protected void onHandleIntent(Intent intent) { -- JobScheduler js = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE); -- -- String deviceId = Utilities.getUniqueID(getApplicationContext()); -- String deviceName = Utilities.getDevice(); -- String deviceVersion = Utilities.getModVersion(); -- String deviceCountry = Utilities.getCountryCode(getApplicationContext()); -- String deviceCarrier = Utilities.getCarrier(getApplicationContext()); -- String deviceCarrierId = Utilities.getCarrierId(getApplicationContext()); -- -- final int cmOrgJobId = AnonymousStats.getNextJobId(getApplicationContext()); -- -- if (DEBUG) Log.d(TAG, "scheduling job id: " + cmOrgJobId); -- -- PersistableBundle cmBundle = new PersistableBundle(); -- cmBundle.putString(StatsUploadJobService.KEY_DEVICE_NAME, deviceName); -- cmBundle.putString(StatsUploadJobService.KEY_UNIQUE_ID, deviceId); -- cmBundle.putString(StatsUploadJobService.KEY_VERSION, deviceVersion); -- cmBundle.putString(StatsUploadJobService.KEY_COUNTRY, deviceCountry); -- cmBundle.putString(StatsUploadJobService.KEY_CARRIER, deviceCarrier); -- cmBundle.putString(StatsUploadJobService.KEY_CARRIER_ID, deviceCarrierId); -- cmBundle.putLong(StatsUploadJobService.KEY_TIMESTAMP, System.currentTimeMillis()); -- -- // set job types -- cmBundle.putInt(StatsUploadJobService.KEY_JOB_TYPE, -- StatsUploadJobService.JOB_TYPE_CMORG); -- -- // schedule cmorg stats upload -- js.schedule(new JobInfo.Builder(cmOrgJobId, new ComponentName(getPackageName(), -- StatsUploadJobService.class.getName())) -- .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) -- .setMinimumLatency(1000) -- .setExtras(cmBundle) -- .setPersisted(true) -- .build()); -- -- // reschedule -- AnonymousStats.updateLastSynced(this); -- ReportingServiceManager.setAlarm(this); -- } --} -diff --git a/src/org/cyanogenmod/cmparts/cmstats/ReportingServiceManager.java b/src/org/cyanogenmod/cmparts/cmstats/ReportingServiceManager.java -deleted file mode 100644 -index ef53a0a..0000000 ---- a/src/org/cyanogenmod/cmparts/cmstats/ReportingServiceManager.java -+++ /dev/null -@@ -1,109 +0,0 @@ --/* -- * Copyright (C) 2012 The CyanogenMod Project -- * (C) 2017 The LineageOS Project -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --package org.cyanogenmod.cmparts.cmstats; -- --import android.app.AlarmManager; --import android.app.PendingIntent; --import android.app.job.JobScheduler; --import android.content.BroadcastReceiver; --import android.content.Context; --import android.content.Intent; --import android.content.SharedPreferences; --import android.os.UserHandle; --import android.util.Log; --import cyanogenmod.providers.CMSettings; -- --public class ReportingServiceManager extends BroadcastReceiver { -- private static final long MILLIS_PER_HOUR = 60L * 60L * 1000L; -- private static final long MILLIS_PER_DAY = 24L * MILLIS_PER_HOUR; -- private static final long UPDATE_INTERVAL = 1L * MILLIS_PER_DAY; -- -- private static final String TAG = ReportingServiceManager.class.getSimpleName(); -- -- public static final String ACTION_LAUNCH_SERVICE = -- "org.cyanogenmod.cmparts.action.TRIGGER_REPORT_METRICS"; -- public static final String EXTRA_FORCE = "force"; -- -- @Override -- public void onReceive(Context context, Intent intent) { -- if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { -- setAlarm(context); -- } else if (intent.getAction().equals(ACTION_LAUNCH_SERVICE)){ -- launchService(context, intent.getBooleanExtra(EXTRA_FORCE, false)); -- } -- } -- -- public static void setAlarm(Context context) { -- SharedPreferences prefs = AnonymousStats.getPreferences(context); -- if (prefs.contains(AnonymousStats.ANONYMOUS_OPT_IN)) { -- migrate(context, prefs); -- } -- if (!Utilities.isStatsCollectionEnabled(context)) { -- return; -- } -- long lastSynced = prefs.getLong(AnonymousStats.ANONYMOUS_LAST_CHECKED, 0); -- if (lastSynced == 0) { -- launchService(context, true); // service will reschedule the next alarm -- return; -- } -- long millisFromNow = (lastSynced + UPDATE_INTERVAL) - System.currentTimeMillis(); -- -- Intent intent = new Intent(ACTION_LAUNCH_SERVICE); -- intent.setClass(context, ReportingServiceManager.class); -- -- AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); -- alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + millisFromNow, -- PendingIntent.getBroadcast(context, 0, intent, 0)); -- Log.d(TAG, "Next sync attempt in : " -- + (millisFromNow / MILLIS_PER_HOUR) + " hours"); -- } -- -- public static void launchService(Context context, boolean force) { -- SharedPreferences prefs = AnonymousStats.getPreferences(context); -- -- if (!Utilities.isStatsCollectionEnabled(context)) { -- return; -- } -- -- if (!force) { -- long lastSynced = prefs.getLong(AnonymousStats.ANONYMOUS_LAST_CHECKED, 0); -- if (lastSynced == 0) { -- setAlarm(context); -- return; -- } -- long timeElapsed = System.currentTimeMillis() - lastSynced; -- if (timeElapsed < UPDATE_INTERVAL) { -- long timeLeft = UPDATE_INTERVAL - timeElapsed; -- Log.d(TAG, "Waiting for next sync : " -- + timeLeft / MILLIS_PER_HOUR + " hours"); -- return; -- } -- } -- -- Intent intent = new Intent(); -- intent.setClass(context, ReportingService.class); -- context.startServiceAsUser(intent, UserHandle.OWNER); -- } -- -- private static void migrate(Context context, SharedPreferences prefs) { -- Utilities.setStatsCollectionEnabled(context, -- prefs.getBoolean(AnonymousStats.ANONYMOUS_OPT_IN, true)); -- prefs.edit().remove(AnonymousStats.ANONYMOUS_OPT_IN).commit(); -- } -- --} -diff --git a/src/org/cyanogenmod/cmparts/cmstats/StatsUploadJobService.java b/src/org/cyanogenmod/cmparts/cmstats/StatsUploadJobService.java -deleted file mode 100644 -index 16f918b..0000000 ---- a/src/org/cyanogenmod/cmparts/cmstats/StatsUploadJobService.java -+++ /dev/null -@@ -1,205 +0,0 @@ --/* -- * Copyright (C) 2015 The CyanogenMod Project -- * (C) 2017 The LineageOS project -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --package org.cyanogenmod.cmparts.cmstats; -- --import android.app.job.JobParameters; --import android.app.job.JobService; --import android.net.Uri; --import android.os.AsyncTask; --import android.os.PersistableBundle; --import android.util.ArrayMap; --import android.util.Log; --import org.cyanogenmod.cmparts.R; --import org.json.JSONException; --import org.json.JSONObject; -- --import java.io.BufferedInputStream; --import java.io.BufferedReader; --import java.io.BufferedWriter; --import java.io.IOException; --import java.io.InputStream; --import java.io.InputStreamReader; --import java.io.OutputStream; --import java.io.OutputStreamWriter; --import java.net.HttpURLConnection; --import java.net.URL; --import java.util.Collections; --import java.util.Map; -- --public class StatsUploadJobService extends JobService { -- -- private static final String TAG = StatsUploadJobService.class.getSimpleName(); -- private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); -- -- public static final String KEY_JOB_TYPE = "job_type"; -- public static final int JOB_TYPE_CMORG = 1; -- -- public static final String KEY_UNIQUE_ID = "uniqueId"; -- public static final String KEY_DEVICE_NAME = "deviceName"; -- public static final String KEY_VERSION = "version"; -- public static final String KEY_COUNTRY = "country"; -- public static final String KEY_CARRIER = "carrier"; -- public static final String KEY_CARRIER_ID = "carrierId"; -- public static final String KEY_TIMESTAMP = "timeStamp"; -- -- private final Map mCurrentJobs -- = Collections.synchronizedMap(new ArrayMap()); -- -- @Override -- public boolean onStartJob(JobParameters jobParameters) { -- if (DEBUG) -- Log.d(TAG, "onStartJob() called with " + "jobParameters = [" + jobParameters + "]"); -- -- if (!Utilities.isStatsCollectionEnabled(this)) { -- return false; -- } -- -- final StatsUploadTask uploadTask = new StatsUploadTask(jobParameters); -- mCurrentJobs.put(jobParameters, uploadTask); -- uploadTask.execute((Void) null); -- return true; -- } -- -- @Override -- public boolean onStopJob(JobParameters jobParameters) { -- if (DEBUG) -- Log.d(TAG, "onStopJob() called with " + "jobParameters = [" + jobParameters + "]"); -- -- final StatsUploadTask cancelledJob; -- cancelledJob = mCurrentJobs.remove(jobParameters); -- -- if (cancelledJob != null) { -- // cancel the ongoing background task -- cancelledJob.cancel(true); -- return true; // reschedule -- } -- -- return false; -- } -- -- private class StatsUploadTask extends AsyncTask { -- -- private JobParameters mJobParams; -- -- public StatsUploadTask(JobParameters jobParams) { -- this.mJobParams = jobParams; -- } -- -- @Override -- protected Boolean doInBackground(Void... params) { -- -- PersistableBundle extras = mJobParams.getExtras(); -- -- String deviceId = extras.getString(KEY_UNIQUE_ID); -- String deviceName = extras.getString(KEY_DEVICE_NAME); -- String deviceVersion = extras.getString(KEY_VERSION); -- String deviceCountry = extras.getString(KEY_COUNTRY); -- String deviceCarrier = extras.getString(KEY_CARRIER); -- String deviceCarrierId = extras.getString(KEY_CARRIER_ID); -- long timeStamp = extras.getLong(KEY_TIMESTAMP); -- -- boolean success = false; -- int jobType = extras.getInt(KEY_JOB_TYPE, -1); -- if (!isCancelled()) { -- switch (jobType) { -- case JOB_TYPE_CMORG: -- try { -- JSONObject json = buildStatsRequest(deviceId, deviceName, -- deviceVersion, deviceCountry, deviceCarrier, deviceCarrierId); -- success = uploadToCM(json); -- } catch (IOException | JSONException e) { -- Log.e(TAG, "Could not upload stats checkin to community server", e); -- success = false; -- } -- break; -- } -- } -- if (DEBUG) -- Log.d(TAG, "job id " + mJobParams.getJobId() + ", has finished with success=" -- + success); -- return success; -- } -- -- @Override -- protected void onPostExecute(Boolean success) { -- mCurrentJobs.remove(mJobParams); -- jobFinished(mJobParams, !success); -- } -- } -- -- private JSONObject buildStatsRequest(String deviceId, String deviceName, String deviceVersion, -- String deviceCountry, String deviceCarrier, -- String deviceCarrierId) throws JSONException { -- JSONObject request = new JSONObject(); -- request.put("device_hash", deviceId); -- request.put("device_name", deviceName); -- request.put("device_version", deviceVersion); -- request.put("device_country", deviceCountry); -- request.put("device_carrier", deviceCarrier); -- request.put("device_carrier_id", deviceCarrierId); -- return request; -- } -- -- private boolean uploadToCM(JSONObject json) throws IOException { -- final Uri uri = Uri.parse(getString(R.string.stats_cm_url)); -- URL url = new URL(uri.toString()); -- HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); -- try { -- urlConnection.setInstanceFollowRedirects(true); -- urlConnection.setDoOutput(true); -- urlConnection.setDoInput(true); -- urlConnection.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); -- -- OutputStream os = urlConnection.getOutputStream(); -- os.write(json.toString().getBytes("UTF-8")); -- os.close(); -- -- final int responseCode = urlConnection.getResponseCode(); -- if (DEBUG) Log.d(TAG, "cm server response code=" + responseCode); -- final boolean success = responseCode == HttpURLConnection.HTTP_OK; -- if (!success) { -- Log.w(TAG, "failed sending, server returned: " + getResponse(urlConnection, -- !success)); -- } -- return success; -- } finally { -- urlConnection.disconnect(); -- } -- -- } -- -- private String getResponse(HttpURLConnection httpUrlConnection, boolean errorStream) -- throws IOException { -- InputStream responseStream = new BufferedInputStream(errorStream -- ? httpUrlConnection.getErrorStream() -- : httpUrlConnection.getInputStream()); -- -- BufferedReader responseStreamReader = new BufferedReader( -- new InputStreamReader(responseStream)); -- String line = ""; -- StringBuilder stringBuilder = new StringBuilder(); -- while ((line = responseStreamReader.readLine()) != null) { -- stringBuilder.append(line).append("\n"); -- } -- responseStreamReader.close(); -- responseStream.close(); -- -- return stringBuilder.toString(); -- } -- --} -diff --git a/src/org/cyanogenmod/cmparts/cmstats/Utilities.java b/src/org/cyanogenmod/cmparts/cmstats/Utilities.java -deleted file mode 100644 -index efb7379..0000000 ---- a/src/org/cyanogenmod/cmparts/cmstats/Utilities.java -+++ /dev/null -@@ -1,102 +0,0 @@ --/* -- * Copyright (C) 2012 The CyanogenMod Project -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --package org.cyanogenmod.cmparts.cmstats; -- --import android.content.Context; --import android.os.Build; --import android.os.SystemProperties; --import android.provider.Settings; --import android.telephony.TelephonyManager; --import android.text.TextUtils; -- --import cyanogenmod.providers.CMSettings; -- --import java.math.BigInteger; --import java.net.NetworkInterface; --import java.security.MessageDigest; -- --public class Utilities { -- public static String getUniqueID(Context context) { -- final String id = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID); -- return digest(context.getPackageName() + id); -- } -- -- public static String getCarrier(Context context) { -- TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); -- String carrier = tm.getNetworkOperatorName(); -- if (TextUtils.isEmpty(carrier)) { -- carrier = "Unknown"; -- } -- return carrier; -- } -- -- public static String getCarrierId(Context context) { -- TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); -- String carrierId = tm.getNetworkOperator(); -- if (TextUtils.isEmpty(carrierId)) { -- carrierId = "0"; -- } -- return carrierId; -- } -- -- public static String getCountryCode(Context context) { -- TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); -- String countryCode = tm.getNetworkCountryIso(); -- if (TextUtils.isEmpty(countryCode)) { -- countryCode = "Unknown"; -- } -- return countryCode; -- } -- -- public static String getDevice() { -- return SystemProperties.get("ro.cm.device", Build.PRODUCT); -- } -- -- public static String getModVersion() { -- return SystemProperties.get("ro.cm.version", Build.DISPLAY); -- } -- -- public static String digest(String input) { -- try { -- MessageDigest md = MessageDigest.getInstance("SHA-256"); -- return new BigInteger(1, md.digest(input.getBytes())).toString(16).toUpperCase(); -- } catch (Exception e) { -- return null; -- } -- } -- -- /** -- * Check to see if global stats are enabled. -- * @param context -- * @return Whether or not stats collection is enabled. -- */ -- public static boolean isStatsCollectionEnabled(Context context) { -- return CMSettings.Secure.getInt(context.getContentResolver(), -- CMSettings.Secure.STATS_COLLECTION, 1) != 0; -- } -- -- /** -- * Enabled or disable stats collection -- * @param context -- * @param enabled Boolean that sets collection being enabled. -- */ -- public static void setStatsCollectionEnabled(Context context, boolean enabled) { -- int enable = (enabled) ? 1 : 0; -- CMSettings.Secure.putInt(context.getContentResolver(), -- CMSettings.Secure.STATS_COLLECTION, enable); -- } --} -- 2.9.3 diff --git a/Patches/LineageOS-14.1/android_packages_apps_CMParts/0001-Remove_Analytics_Partial.patch b/Patches/LineageOS-14.1/android_packages_apps_CMParts/0001-Remove_Analytics_Partial.patch deleted file mode 100644 index 70be667a..00000000 --- a/Patches/LineageOS-14.1/android_packages_apps_CMParts/0001-Remove_Analytics_Partial.patch +++ /dev/null @@ -1,437 +0,0 @@ -From 3ee3966f3bb2c7cf30e6bf38fd2bbb1b2ece00b3 Mon Sep 17 00:00:00 2001 -From: Tad -Date: Tue, 17 Jan 2017 18:04:09 -0500 -Subject: [PATCH] Remove stats - -Change-Id: If22fca4b2b641f8b68247ece20441b5cc7724709 ---- - AndroidManifest.xml | 25 ----- - proguard.flags | 1 - - res/values/config.xml | 3 - - res/values/strings.xml | 22 ----- - res/xml/anonymous_stats.xml | 32 ------- - res/xml/parts_catalog.xml | 5 - - res/xml/preview_data.xml | 52 ----------- - res/xml/privacy_settings.xml | 8 -- - .../cmparts/cmstats/AnonymousStats.java | 73 --------------- - src/org/cyanogenmod/cmparts/cmstats/Utilities.java | 102 --------------------- - 10 files changed, 323 deletions(-) - delete mode 100644 res/xml/anonymous_stats.xml - delete mode 100644 res/xml/preview_data.xml - delete mode 100644 src/org/cyanogenmod/cmparts/cmstats/AnonymousStats.java - delete mode 100644 src/org/cyanogenmod/cmparts/cmstats/Utilities.java - -diff --git a/AndroidManifest.xml b/AndroidManifest.xml -index 3c58c3f..914a9df 100644 ---- a/AndroidManifest.xml -+++ b/AndroidManifest.xml -@@ -183,31 +183,6 @@ - android:value="status_bar_settings" /> -
- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - - - -- -- https://stats.lineageos.org/api/v1/stats -- - - true - -diff --git a/res/values/strings.xml b/res/values/strings.xml -index c13655e..6891213 100644 ---- a/res/values/strings.xml -+++ b/res/values/strings.xml -@@ -482,28 +482,6 @@ - Total commits: %2$s

- Last update: %3$s]]> - -- -- -- LineageOS statistics -- Help make LineageOS better by opting into anonymous statistics reporting -- About -- Opting into LineageOS Statistics will allow non-personal data to be submitted to the -- developers of LineageOS to track unique installations across devices. The information submitted includes an unique identifier, -- which does not compromise your privacy or personal data. The data is submitted during each boot.\n\nFor an example of the data that is submitted, tap on Preview Data. -- Enable reporting -- Preview data -- View stats -- Learn more -- -- -- Unique ID -- Device -- Version -- Country -- Carrier -- Stats collection -- Allow installation metrics and device statistics to be collected -- - - Auto-rotate screen - Rotation settings -diff --git a/res/xml/anonymous_stats.xml b/res/xml/anonymous_stats.xml -deleted file mode 100644 -index b29885c..0000000 ---- a/res/xml/anonymous_stats.xml -+++ /dev/null -@@ -1,32 +0,0 @@ -- -- -- -- -- -- -- -- -- -- -diff --git a/res/xml/parts_catalog.xml b/res/xml/parts_catalog.xml -index 71328eb..347f8e2 100644 ---- a/res/xml/parts_catalog.xml -+++ b/res/xml/parts_catalog.xml -@@ -74,11 +74,6 @@ - android:fragment="org.cyanogenmod.cmparts.statusbar.StatusBarSettings" - cm:xmlRes="@xml/status_bar_settings" /> - -- -- - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -diff --git a/res/xml/privacy_settings.xml b/res/xml/privacy_settings.xml -index 5ae923a..45df2a1 100644 ---- a/res/xml/privacy_settings.xml -+++ b/res/xml/privacy_settings.xml -@@ -36,12 +36,4 @@ - android:targetClass="com.android.settings.applications.ProtectedAppsActivity" /> - - -- -- -- -- - -diff --git a/src/org/cyanogenmod/cmparts/cmstats/AnonymousStats.java b/src/org/cyanogenmod/cmparts/cmstats/AnonymousStats.java -deleted file mode 100644 -index 3a6669d..0000000 ---- a/src/org/cyanogenmod/cmparts/cmstats/AnonymousStats.java -+++ /dev/null -@@ -1,73 +0,0 @@ --/* -- * Copyright (C) 2015 The CyanogenMod Project -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --package org.cyanogenmod.cmparts.cmstats; -- --import android.content.Context; --import android.content.SharedPreferences; --import android.os.Bundle; -- --import org.cyanogenmod.cmparts.R; --import org.cyanogenmod.cmparts.SettingsPreferenceFragment; -- --public class AnonymousStats extends SettingsPreferenceFragment { -- -- private static final String PREF_FILE_NAME = "CMStats"; -- /* package */ static final String ANONYMOUS_OPT_IN = "pref_anonymous_opt_in"; -- /* package */ static final String ANONYMOUS_LAST_CHECKED = "pref_anonymous_checked_in"; -- -- /* package */ static final String KEY_LAST_JOB_ID = "last_job_id"; -- /* package */ static final int QUEUE_MAX_THRESHOLD = 1000; -- -- public static SharedPreferences getPreferences(Context context) { -- return context.getSharedPreferences(PREF_FILE_NAME, 0); -- } -- -- @Override -- public void onCreate(Bundle savedInstanceState) { -- super.onCreate(savedInstanceState); -- addPreferencesFromResource(R.xml.anonymous_stats); -- } -- -- public static void updateLastSynced(Context context) { -- getPreferences(context) -- .edit() -- .putLong(ANONYMOUS_LAST_CHECKED,System.currentTimeMillis()) -- .commit(); -- } -- -- private static int getLastJobId(Context context) { -- return getPreferences(context).getInt(KEY_LAST_JOB_ID, 0); -- } -- -- private static void setLastJobId(Context context, int id) { -- getPreferences(context) -- .edit() -- .putInt(KEY_LAST_JOB_ID, id) -- .commit(); -- } -- -- public static int getNextJobId(Context context) { -- int lastId = getLastJobId(context); -- if (lastId >= QUEUE_MAX_THRESHOLD) { -- lastId = 1; -- } else { -- lastId += 1; -- } -- setLastJobId(context, lastId); -- return lastId; -- } --} -diff --git a/src/org/cyanogenmod/cmparts/cmstats/Utilities.java b/src/org/cyanogenmod/cmparts/cmstats/Utilities.java -deleted file mode 100644 -index efb7379..0000000 ---- a/src/org/cyanogenmod/cmparts/cmstats/Utilities.java -+++ /dev/null -@@ -1,102 +0,0 @@ --/* -- * Copyright (C) 2012 The CyanogenMod Project -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --package org.cyanogenmod.cmparts.cmstats; -- --import android.content.Context; --import android.os.Build; --import android.os.SystemProperties; --import android.provider.Settings; --import android.telephony.TelephonyManager; --import android.text.TextUtils; -- --import cyanogenmod.providers.CMSettings; -- --import java.math.BigInteger; --import java.net.NetworkInterface; --import java.security.MessageDigest; -- --public class Utilities { -- public static String getUniqueID(Context context) { -- final String id = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID); -- return digest(context.getPackageName() + id); -- } -- -- public static String getCarrier(Context context) { -- TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); -- String carrier = tm.getNetworkOperatorName(); -- if (TextUtils.isEmpty(carrier)) { -- carrier = "Unknown"; -- } -- return carrier; -- } -- -- public static String getCarrierId(Context context) { -- TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); -- String carrierId = tm.getNetworkOperator(); -- if (TextUtils.isEmpty(carrierId)) { -- carrierId = "0"; -- } -- return carrierId; -- } -- -- public static String getCountryCode(Context context) { -- TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); -- String countryCode = tm.getNetworkCountryIso(); -- if (TextUtils.isEmpty(countryCode)) { -- countryCode = "Unknown"; -- } -- return countryCode; -- } -- -- public static String getDevice() { -- return SystemProperties.get("ro.cm.device", Build.PRODUCT); -- } -- -- public static String getModVersion() { -- return SystemProperties.get("ro.cm.version", Build.DISPLAY); -- } -- -- public static String digest(String input) { -- try { -- MessageDigest md = MessageDigest.getInstance("SHA-256"); -- return new BigInteger(1, md.digest(input.getBytes())).toString(16).toUpperCase(); -- } catch (Exception e) { -- return null; -- } -- } -- -- /** -- * Check to see if global stats are enabled. -- * @param context -- * @return Whether or not stats collection is enabled. -- */ -- public static boolean isStatsCollectionEnabled(Context context) { -- return CMSettings.Secure.getInt(context.getContentResolver(), -- CMSettings.Secure.STATS_COLLECTION, 1) != 0; -- } -- -- /** -- * Enabled or disable stats collection -- * @param context -- * @param enabled Boolean that sets collection being enabled. -- */ -- public static void setStatsCollectionEnabled(Context context, boolean enabled) { -- int enable = (enabled) ? 1 : 0; -- CMSettings.Secure.putInt(context.getContentResolver(), -- CMSettings.Secure.STATS_COLLECTION, enable); -- } --} --- -2.9.3 - diff --git a/Scripts/LAOS-14.1_Patches.sh b/Scripts/LAOS-14.1_Patches.sh index c2025f6b..83b056eb 100644 --- a/Scripts/LAOS-14.1_Patches.sh +++ b/Scripts/LAOS-14.1_Patches.sh @@ -105,8 +105,8 @@ cp $patches"android_vendor_cm/sce.mk" config/sce.mk enter "packages/apps/CMParts" git fetch https://review.lineageos.org/LineageOS/android_packages_apps_CMParts refs/changes/15/113415/15 && git cherry-pick FETCH_HEAD #Network Traffic -rm -rf src/org/cyanogenmod/cmparts/cmstats/ #Nuke part of CMStats -patch -p1 < $patches"android_packages_apps_CMParts/0001-Remove_Analytics_Partial.patch" #Remove the rest of CMStats +rm -rf src/org/cyanogenmod/cmparts/cmstats/ xml/anonymous_stats.xml res/xml/preview_data.xml #Nuke part of CMStats +patch -p1 < $patches"android_packages_apps_CMParts/0001-Remove_Analytics.patch" #Remove the rest of CMStats rm res/xml/parts_catalog.xml.orig res/values/strings.xml.orig enter "packages/apps/SetupWizard" @@ -130,6 +130,8 @@ rm core/res/res/values/config.xml.orig core/res/res/values/strings.xml.orig core # enter "device/motorola/clark" git fetch https://review.lineageos.org/LineageOS/android_device_motorola_clark refs/changes/99/160699/1 && git cherry-pick FETCH_HEAD #selinux +git fetch https://review.lineageos.org/LineageOS/android_device_motorola_clark refs/changes/91/160791/1 && git cherry-pick FETCH_HEAD +git fetch https://review.lineageos.org/LineageOS/android_device_motorola_clark refs/changes/90/160790/1 && git cherry-pick FETCH_HEAD patch -p1 < $patches"android_device_motorola_clark/0003-Enable_Dex_Preopt.patch" #Force enables dex pre-optimization patch -p1 < $patches"android_device_motorola_clark/0004-Remove_Widevine.patch" #Removes Google Widevine and disables the DRM server #patch -p1 < $patches"android_device_motorola_clark/0005-TWRP.patch" #Add TWRP support