Skip to content

Instantly share code, notes, and snippets.

@krissrex
Last active September 4, 2021 11:00
Show Gist options
  • Save krissrex/56a0d821c482cf24c52925b8ff496019 to your computer and use it in GitHub Desktop.
Save krissrex/56a0d821c482cf24c52925b8ff496019 to your computer and use it in GitHub Desktop.
Smittestopp

What

Erna har blitt app-gründer! Not sure if they want viral growth or try to stop viral growth 🤔

Smittesporing. Government surveilance powered by Microsoft platforms (auth, analytics, crash reporting). It uses GPS and bluetooth to detect if you have been in contact with an infected person.

FAQ here: https://www.simula.no/news/digital-contact-tracing-qa

Why

Because simula is mean. https://www.simula.no/news/digital-smittesporing-apen-kildekode
"Bla bla security". Hey, reversing android apps is as hard as reversing python code... 🐍

apk transformed by http://apk-deguard.com/

Note: The dev folder should really be named no.
Download: https://gofile.io/?c=g8GZuL

Raw apk

Download: https://gofile.io/?c=oJVERn

Use apktool to decompile it to smali. Use apk-deguard.com to undo some of proguard's minification.

For copyright issues, comment here or @ me on twitter (KrissRex).

(Wasn't this paid with tax money? Hey, then I own this!)

Things to do

  • Figure out if Microsoft AppCenter automatically sends extra data. Like how facebook SDK sends all your info just by using the login button.
  • See if they use the encryption Simula says they do
  • See if they send data to anyone else. Seems to be only microsoft so far.
  • Figure out where in the world AppCenter Analytics stores data
  • See if AppCenter Analytics recieves any personally identifiable data
  • Figure out what Microsoft IoT is and this IoTHubDevice.
  • Figure out if this can be exploited to detect presense to a particular person. R$id.this$0.d("found connection to " + str + ", signal strength " + i, new Object[0]);
  • Now everyone is running around with a Bluetooth Low-Energy probe active. Can this be exploited? Bluetooth beacons or scanners?
    • Can the bluetooth code be tricked into performing an action?
    • Can I lie and spam everyone around me with BT-messages saying I'm sick?
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1016" android:versionName="1.0.2" android:compileSdkVersion="29" android:compileSdkVersionCodename="10" package="no.simula.smittestopp" platformBuildVersionCode="29" platformBuildVersionName="10">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="29"/>
<uses-feature android:name="android.hardware.bluetooth_le" android:required="false"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<application android:theme="@style/NoActionBar" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:name="no.simula.corona.CoronaApp" android:allowBackup="false" android:supportsRtl="true" android:roundIcon="@mipmap/ic_launcher_round" android:appComponentFactory="androidx.core.app.CoreComponentFactory" android:isSplitRequired="true">
<activity android:name="no.simula.corona.ui.register.PhoneVerificationActivity"/>
<receiver android:name="no.simula.corona.BootCompletedReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED" android:enabled="true" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</receiver>
<activity android:name="no.simula.corona.MainActivity" android:exported="false" android:screenOrientation="portrait"/>
<activity android:name="no.simula.corona.ui.onboarding.OnboardingActivity" android:screenOrientation="portrait"/>
<activity android:name="no.simula.corona.ui.register.RegisterActivity" android:screenOrientation="portrait"/>
<activity android:name="no.simula.corona.ConsentActivity"/>
<activity android:name="com.microsoft.identity.client.BrowserTabActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="msauthsimulasmittestopp" android:host="something" android:path="/somethingelse"/>
</intent-filter>
</activity>
<service android:name="no.simula.corona.DataCollectorService" android:enabled="true" android:exported="false" android:foregroundServiceType="8"/>
<activity android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen" android:name="no.simula.corona.SplashActivity" android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<meta-data android:name="preloaded_fonts" android:resource="@array/preloaded_fonts"/>
<activity android:name="com.microsoft.identity.common.internal.providers.oauth2.AuthorizationActivity" android:exported="false" android:launchMode="singleTask" android:configChanges="keyboardHidden|orientation|screenSize"/>
<activity android:name="com.microsoft.identity.client.internal.controllers.BrokerActivity"/>
<service android:name="androidx.room.MultiInstanceInvalidationService" android:exported="false"/>
<service android:name="no.nordicsemi.android.support.v18.scanner.ScannerService" android:exported="false"/>
<receiver android:name="no.nordicsemi.android.support.v18.scanner.PendingIntentReceiver" android:exported="true">
<intent-filter>
<action android:name="no.nordicsemi.android.support.v18.ACTION_FOUND"/>
</intent-filter>
</receiver>
<activity android:theme="@style/Theme.Translucent.NoTitleBar" android:name="com.google.android.gms.common.api.GoogleApiActivity" android:exported="false"/>
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>
<provider android:name="androidx.lifecycle.ProcessLifecycleOwnerInitializer" android:exported="false" android:multiprocess="true" android:authorities="no.simula.smittestopp.lifecycle-process"/>
<meta-data android:name="com.android.vending.splits.required" android:value="true"/>
<meta-data android:name="com.android.vending.splits" android:value="@xml/splits0"/>
<meta-data android:name="com.android.vending.derived.apk.id" android:value="1"/>
</application>
</manifest>

Just did a grep for "https://" in the smali source.

https://api-smittestopp-prod.azure-api.net/onboarding/register-device
https://api-smittestopp-prod.azure-api.net/permissions/revoke-consent
https://smittestopp.b2clogin.com/tfp/smittestopp.onmicrosoft.com/B2C_1A_phone_SUSI
https://smittestopp.onmicrosoft.com/backend/Device.Write

Sources

The files you find the urls in.

./j/b/a/h.smali:    const-string v8, "https://api-smittestopp-prod.azure-api.net/onboarding/register-device"
./no/simula/corona/ui/main/SettingsFragment.smali:    const-string v4, "https://api-smittestopp-prod.azure-api.net/permissions/revoke-consent"
./no/simula/corona/ui/register/PhoneVerificationActivity.smali:    const-string v1, "https://smittestopp.b2clogin.com/tfp/smittestopp.onmicrosoft.com/B2C_1A_phone_SUSI"
./no/simula/corona/ui/register/PhoneVerificationActivity.smali:    const-string v0, "https://smittestopp.onmicrosoft.com/backend/Device.Write"

Something else

something/somethingelse

🤔

./no/simula/corona/ui/register/PhoneVerificationActivity.smali:    const-string v2, "msauthsimulasmittestopp://something/somethingelse"

no.simula.corona.ui.register.PhoneVerificationActivity;

    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        setContentView((int) R.layout.activity_phone_verification);
        Analytics.trackEvent("Verify Phone Number");
        setResult(0);
        PublicClientApplication.create(getApplicationContext(), "f427f831-60ae-4ea3-9de6-11977b46cf01", "https://smittestopp.b2clogin.com/tfp/smittestopp.onmicrosoft.com/B2C_1A_phone_SUSI", "msauthsimulasmittestopp://something/somethingelse", (IPublicClientApplication.ApplicationCreatedListener) this);
   }

AndroidManifest.xml

        <activity android:name="com.microsoft.identity.client.BrowserTabActivity" android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.BROWSABLE"/>
                <data android:scheme="msauthsimulasmittestopp" android:host="something" android:path="/somethingelse"/>
            </intent-filter>
$ grep -R "trackEvent" .
./DataCollectorService$a.smali:    invoke-static {p1}, Lcom/microsoft/appcenter/analytics/Analytics;->trackEvent(Ljava/lang/String;)V
./DataCollectorService.smali:    invoke-static {p1, p0}, Lcom/microsoft/appcenter/analytics/Analytics;->trackEvent(Ljava/lang/String;Lcom/microsoft/appcenter/analytics/EventProperties;)V
./DataCollectorService.smali:    invoke-static {v6, v7}, Lcom/microsoft/appcenter/analytics/Analytics;->trackEvent(Ljava/lang/String;Lcom/microsoft/appcenter/analytics/EventProperties;)V
./DataCollectorService.smali:    invoke-static {v0, v3}, Lcom/microsoft/appcenter/analytics/Analytics;->trackEvent(Ljava/lang/String;Lcom/microsoft/appcenter/analytics/EventProperties;)V
./MainActivity.smali:    invoke-static {v0, p1}, Lcom/microsoft/appcenter/analytics/Analytics;->trackEvent(Ljava/lang/String;Ljava/util/Map;)V
./ui/main/SettingsFragment.smali:    invoke-static {v0}, Lcom/microsoft/appcenter/analytics/Analytics;->trackEvent(Ljava/lang/String;)V
./ui/main/SettingsFragment.smali:    invoke-static {p1}, Lcom/microsoft/appcenter/analytics/Analytics;->trackEvent(Ljava/lang/String;)V
./ui/main/SettingsFragment.smali:    invoke-static {p1}, Lcom/microsoft/appcenter/analytics/Analytics;->trackEvent(Ljava/lang/String;)V
./ui/onboarding/OnboardingActivity$a.smali:    invoke-static {v0}, Lcom/microsoft/appcenter/analytics/Analytics;->trackEvent(Ljava/lang/String;)V
./ui/onboarding/OnboardingActivity$a.smali:    invoke-static {p1}, Lcom/microsoft/appcenter/analytics/Analytics;->trackEvent(Ljava/lang/String;)V
./ui/onboarding/OnboardingActivity.smali:    invoke-static {p3}, Lcom/microsoft/appcenter/analytics/Analytics;->trackEvent(Ljava/lang/String;)V
./ui/onboarding/OnboardingActivity.smali:    invoke-static {p1}, Lcom/microsoft/appcenter/analytics/Analytics;->trackEvent(Ljava/lang/String;)V
./ui/register/PhoneVerificationActivity$a.smali:    invoke-static {v0}, Lcom/microsoft/appcenter/analytics/Analytics;->trackEvent(Ljava/lang/String;)V
./ui/register/PhoneVerificationActivity$a.smali:    invoke-static {v0}, Lcom/microsoft/appcenter/analytics/Analytics;->trackEvent(Ljava/lang/String;)V
./ui/register/PhoneVerificationActivity.smali:    invoke-static {p1}, Lcom/microsoft/appcenter/analytics/Analytics;->trackEvent(Ljava/lang/String;)V
./ui/register/PhoneVerificationActivity.smali:    invoke-static {v1}, Lcom/microsoft/appcenter/analytics/Analytics;->trackEvent(Ljava/lang/String;)V

https://docs.microsoft.com/en-us/appcenter/gdpr/does-it-apply-to-me


no.simula.corona.DataCollectorService

R$id.this$0.log("Le advertiser is not supported on this device", new Object[0]);
EventProperties eventProperties = new EventProperties();
eventProperties.e("what", "Not supported");
StringBuilder sb = new StringBuilder();
sb.append(Build.MANUFACTURER);
sb.append(WWWAuthenticateHeader.SPACE);
sb.append(Build.MODEL);
eventProperties.e(Device.MODEL, sb.toString());
Analytics.trackEvent("LeAdvertise", eventProperties);
.class public final Lno/simula/corona/DataCollectorService$a;
.super Ljava/lang/Object;
.source "SourceFile"
# interfaces
.implements Lcom/microsoft/azure/sdk/iot/device/IotHubEventCallback;
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lno/simula/corona/DataCollectorService;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x11
name = "a"
.end annotation
# instance fields
.field public final a:Ljava/lang/String;
.field public final b:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List<",
"Ljava/lang/Integer;",
">;"
}
.end annotation
.end field
.field public final synthetic c:Lno/simula/corona/DataCollectorService;
# direct methods
.method public constructor <init>(Lno/simula/corona/DataCollectorService;Ljava/lang/String;Ljava/util/List;)V
.locals 1
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
"Ljava/util/List<",
"Ljava/lang/Integer;",
">;)V"
}
.end annotation
const/4 v0, 0x0
if-eqz p2, :cond_1
if-eqz p3, :cond_0
.line 1
iput-object p1, p0, Lno/simula/corona/DataCollectorService$a;->c:Lno/simula/corona/DataCollectorService;
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
iput-object p2, p0, Lno/simula/corona/DataCollectorService$a;->a:Ljava/lang/String;
iput-object p3, p0, Lno/simula/corona/DataCollectorService$a;->b:Ljava/util/List;
return-void
:cond_0
const-string p1, "tobeUpdated"
.line 2
invoke-static {p1}, Lh/k/b/g;->a(Ljava/lang/String;)V
throw v0
:cond_1
const-string p1, "mode"
invoke-static {p1}, Lh/k/b/g;->a(Ljava/lang/String;)V
throw v0
.end method
# virtual methods
.method public execute(Lcom/microsoft/azure/sdk/iot/device/IotHubStatusCode;Ljava/lang/Object;)V
.locals 2
const/4 p2, 0x0
if-nez p1, :cond_0
goto :goto_0
.line 1
:cond_0
invoke-virtual {p1}, Ljava/lang/Enum;->ordinal()I
move-result v0
if-eqz v0, :cond_3
const/4 v1, 0x1
if-eq v0, v1, :cond_3
const/4 v1, 0x5
if-eq v0, v1, :cond_2
:goto_0
const-string v0, "Uploaded failed because "
.line 2
invoke-static {v0}, Le/a/a/a/a;->a(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
if-eqz p1, :cond_1
invoke-virtual {p1}, Ljava/lang/Enum;->name()Ljava/lang/String;
move-result-object p1
if-eqz p1, :cond_1
goto :goto_1
:cond_1
const-string p1, "N/A"
:goto_1
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
.line 3
invoke-static {p1}, Lcom/microsoft/appcenter/analytics/Analytics;->trackEvent(Ljava/lang/String;)V
new-array p2, p2, [Ljava/lang/Object;
.line 4
sget-object v0, Ll/a/a;->d:Ll/a/a$b;
invoke-virtual {v0, p1, p2}, Ll/a/a$b;->b(Ljava/lang/String;[Ljava/lang/Object;)V
goto :goto_2
.line 5
:cond_2
iget-object p1, p0, Lno/simula/corona/DataCollectorService$a;->c:Lno/simula/corona/DataCollectorService;
invoke-static {p1}, Lno/simula/corona/DataCollectorService;->a(Lno/simula/corona/DataCollectorService;)V
goto :goto_2
:cond_3
const-string p1, "Uploaded "
.line 6
invoke-static {p1}, Le/a/a/a/a;->a(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p1
iget-object v0, p0, Lno/simula/corona/DataCollectorService$a;->a:Ljava/lang/String;
const-string v1, " data, OK, OK_EMPTY"
invoke-static {p1, v0, v1}, Le/a/a/a/a;->a(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object p1
new-array p2, p2, [Ljava/lang/Object;
.line 7
sget-object v0, Ll/a/a;->d:Ll/a/a$b;
invoke-virtual {v0, p1, p2}, Ll/a/a$b;->c(Ljava/lang/String;[Ljava/lang/Object;)V
.line 8
iget-object p1, p0, Lno/simula/corona/DataCollectorService$a;->c:Lno/simula/corona/DataCollectorService;
iget-object p2, p0, Lno/simula/corona/DataCollectorService$a;->a:Ljava/lang/String;
iget-object v0, p0, Lno/simula/corona/DataCollectorService$a;->b:Ljava/util/List;
invoke-static {p1, p2, v0}, Lno/simula/corona/DataCollectorService;->a(Lno/simula/corona/DataCollectorService;Ljava/lang/String;Ljava/util/List;)V
.line 9
:goto_2
iget-object p1, p0, Lno/simula/corona/DataCollectorService$a;->c:Lno/simula/corona/DataCollectorService;
const/4 p2, 0x0
.line 10
iput-object p2, p1, Lno/simula/corona/DataCollectorService;->L:Lj/b/a/f;
return-void
.end method
package dev.simula.corona;
import activities.Fragment;
import activities.tests.core.Log;
import android.app.Application;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothGattServer;
import android.bluetooth.BluetoothManager;
import android.bluetooth.le.BluetoothLeAdvertiser;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.sqlite.SQLiteProgram;
import android.location.Location;
import android.os.Build;
import android.os.IBinder;
import android.os.Looper;
import codehaus.plexus.eventbus.EventBus;
import com.google.android.android.location.LocationRequest;
import com.google.android.android.location.LocationResult;
import com.microsoft.appcenter.analytics.Analytics;
import com.microsoft.appcenter.analytics.EventProperties;
import com.microsoft.appcenter.analytics.ingestion.models.EventLog;
import com.microsoft.appcenter.crashes.Crashes;
import com.microsoft.appcenter.ingestion.models.Device;
import com.microsoft.azure.org.org.device.DeviceClient;
import com.microsoft.azure.org.org.device.IotHubEventCallback;
import com.microsoft.azure.org.org.device.IotHubStatusCode;
import com.microsoft.azure.storage.blob.BlobConstants;
import com.microsoft.identity.client.PublicClientApplication;
import com.microsoft.identity.client.claims.WWWAuthenticateHeader;
import j.b.a.r;
import jackson.org.util.AtomicBoolean;
import jackson.org.util.BitmapManager;
import jackson.org.util.ImageLoader;
import jackson.org.util.Label;
import jackson.org.util.Language;
import jackson.org.util.Logger;
import jackson.org.util.Menu;
import jackson.org.util.Message;
import jackson.org.util.PlaybackService$LocalBinder;
import jackson.org.util.Point;
import jackson.org.util.asm.Content;
import jackson.org.util.asm.DownloadsFragment$1;
import jackson.org.util.asm.MainActivity;
import jackson.org.util.asm.PlaybackService$8;
import jackson.org.util.asm.Session;
import jackson.org.util.h;
import jackson.org.util.io.ConnectivityReceiver;
import jackson.org.util.k;
import jackson.org.util.util.Account;
import jackson.org.util.util.Host;
import jackson.org.util.util.Pair;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import lombok.org.org.org.util.ByteVector;
import lombok.org.org.org.util.g;
import lombok.org.org.org.util.i;
import no.simula.corona.SplashActivity;
import no.simula.smittestopp.R;
import org.json.JSONObject;
import service.message.R$id;
import v7.androidplot.d;
import v7.androidplot.util.SignatureVisitor;
import v7.internal.menu.f;
public final class DataCollectorService extends Service implements jackson.org.util.asm.c {
public final PlaybackService$LocalBinder Binder = new PlaybackService$LocalBinder(this);
public i a;
public MainActivity activity;
public MeasurementDatabase b;
public boolean c;
public ConnectivityReceiver connectivityReceiver;
public Content content;
public AtomicBoolean context;
public BitmapManager dialog;
public boolean first;
public final int from;
public boolean isBound;
public ByteVector l;
public Session listView;
public Notification mContext;
public PlaybackService$8 mScreenOffReceiver;
public long mStartTime;
public Notification mUserDictionaryWords;
public ImageLoader p;
public Notification word;
public LocationRequest x;
public final class a implements IotHubEventCallback {
public final List<Integer> b;
public final /* synthetic */ DataCollectorService c;
public final String e;
public a(DataCollectorService dataCollectorService, String str, List list) {
if (str == null) {
Log.get("mode");
throw new NullPointerException("Null throw statement replaced by Soot");
} else if (list != null) {
this.c = dataCollectorService;
this.e = str;
this.b = list;
} else {
Log.get("tobeUpdated");
throw new NullPointerException("Null throw statement replaced by Soot");
}
}
/* JADX WARNING: Code restructure failed: missing block: B:10:0x001c, code lost:
if (r4 != null) goto L_0x0021;
*/
/* Code decompiled incorrectly, please refer to instructions dump. */
public void execute(com.microsoft.azure.org.org.device.IotHubStatusCode r12, java.lang.Object r13) {
/*
r11 = this;
if (r12 != 0) goto L_0x0003
goto L_0x000f
L_0x0003:
int r0 = r12.ordinal()
if (r0 == 0) goto L_0x003a
r1 = 1
if (r0 == r1) goto L_0x003a
r1 = 5
if (r0 == r1) goto L_0x0034
L_0x000f:
java.lang.String r3 = "Uploaded failed because "
java.lang.StringBuilder r2 = lombok.javac.java8.handlers.StringBuilder.append(r3)
if (r12 == 0) goto L_0x001f
java.lang.String r4 = r12.name()
r5 = r4
if (r4 == 0) goto L_0x001f
goto L_0x0021
L_0x001f:
java.lang.String r5 = "N/A"
L_0x0021:
r2.append(r5)
java.lang.String r4 = r2.toString()
com.microsoft.appcenter.analytics.Analytics.trackEvent(r4)
r1 = 0
java.lang.Object[] r6 = new java.lang.Object[r1]
service.message.Log r7 = service.message.R$id.this$0
r7.e(r4, r6)
goto L_0x0059
L_0x0034:
dev.simula.corona.DataCollectorService r8 = r11.c
dev.simula.corona.DataCollectorService.a(r8)
goto L_0x0059
L_0x003a:
java.lang.String r3 = "Uploaded "
java.lang.StringBuilder r2 = lombok.javac.java8.handlers.StringBuilder.append(r3)
java.lang.String r4 = r11.e
java.lang.String r3 = " data, OK, OK_EMPTY"
java.lang.String r4 = lombok.javac.java8.handlers.StringBuilder.append((java.lang.StringBuilder) r2, (java.lang.String) r4, (java.lang.String) r3)
r1 = 0
java.lang.Object[] r6 = new java.lang.Object[r1]
service.message.Log r7 = service.message.R$id.this$0
r7.d(r4, r6)
dev.simula.corona.DataCollectorService r8 = r11.c
java.lang.String r4 = r11.e
java.util.List<java.lang.Integer> r9 = r11.b
dev.simula.corona.DataCollectorService.a(r8, r4, r9)
L_0x0059:
dev.simula.corona.DataCollectorService r8 = r11.c
r10 = 0
r8.dialog = r10
return
*/
throw new UnsupportedOperationException("Method not decompiled: dev.simula.corona.DataCollectorService.a.execute(com.microsoft.azure.org.org.device.IotHubStatusCode, java.lang.Object):void");
}
}
public final class b extends ByteVector {
public b() {
}
public void a(LocationResult locationResult) {
if (locationResult == null) {
R$id.this$0.d("Location result is null", new Object[0]);
return;
}
for (Location $r7 : locationResult.f) {
DataCollectorService $r8 = DataCollectorService.this;
Log.get($r7, "location");
DataCollectorService.a($r8, $r7);
}
}
}
public final class c implements Point {
public c() {
}
public void update(jackson.org.util.Location location) {
if (location != null) {
DataCollectorService.execute(DataCollectorService.this, "gps", location.value);
DataCollectorService.execute(DataCollectorService.this, "bluetooth", location.id);
}
}
}
public DataCollectorService() {
LocationRequest $r2 = new LocationRequest();
LocationRequest.connect(12000);
$r2.x = 12000;
if (!$r2.e) {
$r2.c = (long) (((double) 12000) / 6.0d);
}
LocationRequest.connect(10000);
$r2.e = true;
$r2.c = 10000;
$r2.a = 100;
this.x = $r2;
this.mStartTime = Logger.now();
this.from = 1;
}
public static final /* synthetic */ void a(DataCollectorService dataCollectorService) {
if (dataCollectorService != null) {
PendingIntent $r2 = PendingIntent.getActivity(dataCollectorService, 0, new Intent(dataCollectorService, SplashActivity.class), 0);
dataCollectorService.clear();
dataCollectorService.save();
Logger.write(dataCollectorService);
MeasurementDatabase $r3 = dataCollectorService.b;
if ($r3 != null) {
((jackson.org.util.i) $r3.getCount()).a();
MeasurementDatabase $r32 = dataCollectorService.b;
if ($r32 != null) {
((h) $r32.b()).a();
f $r8 = new f(dataCollectorService);
$r8.a((CharSequence) dataCollectorService.getString(R.string.data_deleted_notification));
$r8.c.icon = R$drawable.ic_stat_name;
$r8.add((CharSequence) dataCollectorService.getString(R.string.data_deleted_action));
$r8.p = 1;
$r8.a = $r2;
$r8.add(true);
if (Build.VERSION.SDK_INT >= 26) {
$r8.id = "Smittestopp Reminders";
}
Notification $r10 = $r8.add();
Object $r11 = dataCollectorService.getSystemService("notification");
if ($r11 != null) {
((NotificationManager) $r11).notify(17, $r10);
AtomicBoolean $r13 = dataCollectorService.context;
if ($r13 != null) {
$r13.uploadImage();
}
dataCollectorService.stopSelf();
return;
}
throw new Fragment("null cannot be cast to non-null type android.app.NotificationManager");
}
Log.d("mDatabase");
throw new NullPointerException("Null throw statement replaced by Soot");
}
Log.d("mDatabase");
throw new NullPointerException("Null throw statement replaced by Soot");
}
throw new NullPointerException("Null throw statement replaced by Soot");
}
/* JADX INFO: finally extract failed */
public static final /* synthetic */ void a(DataCollectorService dataCollectorService, Location location) {
double $d6;
double $d5;
if (dataCollectorService != null) {
double $d0 = location.getLatitude();
double $d1 = location.getLongitude();
float $f0 = location.getAccuracy();
R$id.this$0.d('(' + $d0 + ", " + $d1 + "), accuracy: " + $f0, new Object[0]);
long time = location.getTime() / ((long) 1000);
double $d2 = location.getLatitude();
double $d02 = location.getLongitude();
double $d12 = (double) location.getAccuracy();
double $d3 = location.getAltitude();
double $d4 = (double) location.getSpeed();
if (Build.VERSION.SDK_INT >= 26) {
$d5 = (double) location.getVerticalAccuracyMeters();
$d6 = (double) location.getSpeedAccuracyMetersPerSecond();
} else {
$d5 = -1.0d;
$d6 = -1.0d;
}
MeasurementDatabase $r7 = dataCollectorService.b;
if ($r7 != null) {
k $r8 = $r7.b();
Message[] $r9 = {new Message(time, Double.valueOf($d2), Double.valueOf($d02), Double.valueOf($d12), Double.valueOf($d3), Double.valueOf($d5), Double.valueOf($d4), Double.valueOf($d6), false)};
h $r17 = (h) $r8;
d $r18 = $r17.a;
d dVar = $r18;
$r18.d();
d $r182 = $r17.a;
d dVar2 = $r182;
$r182.a();
try {
d.u.b<r> bVar = $r17.b;
d.u.b<r> bVar2 = bVar;
bVar.a($r9);
d $r183 = $r17.a;
d dVar3 = $r183;
$r183.e();
d $r184 = $r17.a;
d dVar4 = $r184;
$r184.clear();
if (dataCollectorService.onCreateView()) {
dataCollectorService.onPostExecute();
}
} catch (Throwable $r20) {
d $r185 = $r17.a;
d dVar5 = $r185;
$r185.clear();
throw $r20;
}
} else {
Log.d("mDatabase");
throw new NullPointerException("Null throw statement replaced by Soot");
}
} else {
throw new NullPointerException("Null throw statement replaced by Soot");
}
}
public static final /* synthetic */ void a(DataCollectorService dataCollectorService, String $r1, List list) {
if (dataCollectorService != null) {
int $i0 = $r1.hashCode();
int $i1 = 1;
if ($i0 != 102570) {
if ($i0 == 1968882350 && $r1.equals("bluetooth")) {
MeasurementDatabase $r3 = dataCollectorService.b;
if ($r3 != null) {
jackson.org.util.i $r5 = (jackson.org.util.i) $r3.getCount();
$r5.a.d();
StringBuilder $r7 = new StringBuilder();
$r7.append("UPDATE bluetoothcontact SET isUploaded = 1 WHERE id in (");
SignatureVisitor.format($r7, list.size());
$r7.append(")");
v7.widget.util.asm.f $r8 = $r5.a.a($r7.toString());
Iterator $r9 = list.iterator();
while ($r9.hasNext()) {
Integer $r11 = (Integer) $r9.next();
if ($r11 == null) {
SQLiteProgram $r12 = $r8.a;
SQLiteProgram sQLiteProgram = $r12;
$r12.bindNull($i1);
} else {
long $l2 = (long) $r11.intValue();
SQLiteProgram $r122 = $r8.a;
$r122.bindLong($i1, $l2);
}
$i1++;
}
$r5.a.a();
try {
$r8.b();
$r5.a.e();
return;
} finally {
$r5.a.clear();
}
} else {
Log.d("mDatabase");
throw new NullPointerException("Null throw statement replaced by Soot");
}
}
} else if ($r1.equals("gps")) {
MeasurementDatabase $r32 = dataCollectorService.b;
if ($r32 != null) {
h $r15 = (h) $r32.b();
$r15.a.d();
StringBuilder $r72 = new StringBuilder();
$r72.append("UPDATE measurement SET isUploaded = 1 WHERE id in (");
SignatureVisitor.format($r72, list.size());
$r72.append(")");
v7.widget.util.asm.f $r82 = $r15.a.a($r72.toString());
Iterator $r92 = list.iterator();
while ($r92.hasNext()) {
Integer $r112 = (Integer) $r92.next();
if ($r112 == null) {
SQLiteProgram $r123 = $r82.a;
$r123.bindNull($i1);
} else {
long $l22 = (long) $r112.intValue();
SQLiteProgram $r124 = $r82.a;
$r124.bindLong($i1, $l22);
}
$i1++;
}
$r15.a.a();
try {
$r82.b();
$r15.a.e();
return;
} finally {
$r15.a.clear();
}
} else {
Log.d("mDatabase");
throw new NullPointerException("Null throw statement replaced by Soot");
}
}
EventProperties eventProperties = new EventProperties();
eventProperties.e("eventType", $r1);
Analytics.trackEvent("Mark upload failed", eventProperties);
return;
}
throw new NullPointerException("Null throw statement replaced by Soot");
}
public static final void apply(Context context2) {
if (context2 != null) {
Intent $r0 = new Intent(context2, no.simula.corona.DataCollectorService.class);
$r0.putExtra("service-command", 1);
context2.startService($r0);
return;
}
Log.get(PublicClientApplication.NONNULL_CONSTANTS.CONTEXT);
throw new NullPointerException("Null throw statement replaced by Soot");
}
public static final /* synthetic */ void execute(DataCollectorService dataCollectorService, String str, Language language) {
if (dataCollectorService != null) {
int $i0 = language.c.size();
for (int $i1 = 0; $i1 < $i0; $i1++) {
activities.Location $r6 = language.c.get($i1);
List $r4 = (List) $r6.c;
JSONObject $r7 = (JSONObject) $r6.id;
if ($r7.length() > 0 && $r7.getJSONArray("events").length() > 0) {
com.microsoft.azure.org.org.device.Message $r9 = new com.microsoft.azure.org.org.device.Message($r7.toString());
$r9.setProperty("eventType", str);
ImageLoader $r11 = dataCollectorService.p;
if ($r11 != null) {
a aVar = new a(dataCollectorService, str, $r4);
if (!$r11.b || $r11.c == null) {
R$id.this$0.d("Device is not connected or provisioned", new Object[0]);
aVar.execute(IotHubStatusCode.ERROR, new ArrayList());
} else {
if (!Log.equals($r9.getContentType(), $r11.contentType)) {
String $r10 = $r11.contentType;
String str2 = $r10;
$r9.setContentTypeFinal($r10);
}
if (!Log.equals($r9.getContentEncoding(), $r11.encoding)) {
String $r102 = $r11.encoding;
String str3 = $r102;
$r9.setContentEncoding($r102);
}
DeviceClient $r12 = $r11.c;
if ($r12 != null) {
try {
$r12.sendEventAsync($r9, aVar, (Object) null);
} catch (Exception $r16) {
LinkedHashMap linkedHashMap = new LinkedHashMap();
linkedHashMap.put("where", "IoTHubDevice::sendEventAsync");
Crashes.trackError($r16, linkedHashMap, (Iterable) null);
R$id.this$0.d($r16);
aVar.execute(IotHubStatusCode.ERROR, new ArrayList());
}
}
R$id.this$0.d("Pushed message", new Object[0]);
}
} else {
Log.d("mDevice");
throw new NullPointerException("Null throw statement replaced by Soot");
}
}
}
return;
}
throw new NullPointerException("Null throw statement replaced by Soot");
}
public static final void invoke(Context context2) {
if (context2 != null) {
Intent $r0 = new Intent(context2, no.simula.corona.DataCollectorService.class);
$r0.putExtra("service-command", 2);
context2.startService($r0);
return;
}
Log.get(PublicClientApplication.NONNULL_CONSTANTS.CONTEXT);
throw new NullPointerException("Null throw statement replaced by Soot");
}
/* JADX INFO: finally extract failed */
public void a(String str, int i, int i2, long $l2) {
if (str != null) {
R$id.this$0.d("found connection to " + str + ", signal strength " + i, new Object[0]);
long j = $l2 / ((long) 1000);
MeasurementDatabase $r8 = this.b;
if ($r8 != null) {
Menu $r9 = $r8.getCount();
Label[] $r2 = {new Label(j, str, i, i2, false)};
jackson.org.util.i $r10 = (jackson.org.util.i) $r9;
d $r11 = $r10.a;
d dVar = $r11;
$r11.d();
d $r112 = $r10.a;
d dVar2 = $r112;
$r112.a();
try {
d.u.b<j.b.a.a> bVar = $r10.b;
d.u.b<j.b.a.a> bVar2 = bVar;
bVar.a($r2);
d $r113 = $r10.a;
d dVar3 = $r113;
$r113.e();
d $r114 = $r10.a;
d dVar4 = $r114;
$r114.clear();
if (onCreateView()) {
onPostExecute();
}
} catch (Throwable $r13) {
d $r115 = $r10.a;
d dVar5 = $r115;
$r115.clear();
throw $r13;
}
} else {
Log.d("mDatabase");
throw new NullPointerException("Null throw statement replaced by Soot");
}
} else {
Log.get("deviceId");
throw new NullPointerException("Null throw statement replaced by Soot");
}
}
public final Notification add() {
Intent $r1 = new Intent(this, no.simula.corona.DataCollectorService.class);
$r1.putExtra("from-service", true);
PendingIntent $r2 = PendingIntent.getService(this, 0, $r1, BlobConstants.DEFAULT_SINGLE_BLOB_PUT_THRESHOLD_IN_BYTES);
Intent $r12 = new Intent(this, no.simula.corona.MainActivity.class);
$r12.setFlags(268468224);
PendingIntent $r3 = PendingIntent.getActivity(this, 0, $r12, 0);
f $r4 = new f(this);
$r4.a((CharSequence) getString(R.string.persistent_notification_title));
$r4.c.icon = R$drawable.ic_stat_name;
$r4.add((CharSequence) getString(R.string.notification_description));
$r4.p = 1;
$r4.add(R.drawable.ic_stop_red, getString(R.string.stop), $r2);
$r4.add(R.drawable.ic_settings_green, getString(R.string.open), $r3);
if (Build.VERSION.SDK_INT >= 26) {
$r4.id = "Smittestopp Notification Channel";
}
Notification $r6 = $r4.add();
Log.get($r6, "builder.build()");
return $r6;
}
public final Notification add(int i) {
PendingIntent $r2 = PendingIntent.getActivity(this, 0, new Intent(this, SplashActivity.class), 0);
f $r3 = new f(this);
$r3.a((CharSequence) getString(i));
$r3.c.icon = R$drawable.ic_stat_name;
$r3.add((CharSequence) getString(R.string.reminder_description));
$r3.p = 1;
$r3.a = $r2;
$r3.add(true);
if (Build.VERSION.SDK_INT >= 26) {
$r3.id = "Smittestopp Reminders";
}
Notification $r5 = $r3.add();
Log.get($r5, "notification.build()");
return $r5;
}
public final void clear() {
if (this.first) {
R$id.this$0.d("Stopping location updates", new Object[0]);
i $r4 = this.a;
if ($r4 != null) {
ByteVector $r5 = this.l;
if ($r5 != null) {
try {
$r4.a($r5);
this.first = false;
AtomicBoolean $r6 = this.context;
if ($r6 != null) {
$r6.set();
}
EventBus.getDefault().post(new Account(false));
this.first = false;
} catch (SecurityException $r8) {
R$id.this$0.d($r8);
Crashes.trackError($r8);
}
} else {
Log.d("locationCallback");
throw new NullPointerException("Null throw statement replaced by Soot");
}
} else {
Log.d("fusedLocationClient");
throw new NullPointerException("Null throw statement replaced by Soot");
}
} else {
R$id.this$0.d("location services already closed", new Object[0]);
}
}
public final boolean get() {
return this.first || this.c;
}
public final void init() {
BluetoothLeAdvertiser $r10;
if (!((this.content == null || this.listView == null || this.activity == null) ? false : true)) {
R$id.this$0.i("Initializing bluetooth components", new Object[0]);
Object $r7 = getSystemService("bluetooth");
if ($r7 != null) {
BluetoothManager $r8 = (BluetoothManager) $r7;
try {
BluetoothAdapter $r9 = $r8.getAdapter();
if ($r9 != null) {
if ($r9.isEnabled()) {
BluetoothAdapter $r92 = $r8.getAdapter();
Log.get($r92, "bluetoothManager.adapter");
if ($r92.getBluetoothLeAdvertiser() == null) {
R$id.this$0.log("Le advertiser is not supported on this device", new Object[0]);
EventProperties eventProperties = new EventProperties();
eventProperties.e("what", "Not supported");
StringBuilder sb = new StringBuilder();
sb.append(Build.MANUFACTURER);
sb.append(WWWAuthenticateHeader.SPACE);
sb.append(Build.MODEL);
eventProperties.e(Device.MODEL, sb.toString());
Analytics.trackEvent("LeAdvertise", eventProperties);
}
this.content = new Content(this, $r8);
BluetoothAdapter $r93 = $r8.getAdapter();
Log.get($r93, "bluetoothManager.adapter");
this.listView = new Session($r93.getBluetoothLeAdvertiser());
Application $r14 = getApplication();
Log.get($r14, "this.application");
jackson.libs.org.objectweb.objectweb.asm.f $r15 = jackson.libs.org.objectweb.objectweb.asm.f.a();
Log.get($r15, "BluetoothLeScannerCompat.getScanner()");
this.activity = new MainActivity($r14, this, $r15);
}
}
R$id.this$0.i("Bluetooth adapter is null", new Object[0]);
} catch (Exception $r16) {
LinkedHashMap linkedHashMap = new LinkedHashMap();
linkedHashMap.put("where", "DataCollector::initializeBluetooth");
Crashes.trackError($r16, linkedHashMap, (Iterable) null);
}
} else {
throw new Fragment("null cannot be cast to non-null type android.bluetooth.BluetoothManager");
}
}
Object $r72 = getSystemService("bluetooth");
if ($r72 != null) {
BluetoothManager $r82 = (BluetoothManager) $r72;
R$id.this$0.d("Starting bluetooth updates", new Object[0]);
try {
BluetoothAdapter $r94 = $r82.getAdapter();
if ($r94 != null) {
if ($r94.isEnabled()) {
Content $r2 = this.content;
if ($r2 != null) {
DownloadsFragment$1 downloadsFragment$1 = new DownloadsFragment$1($r2);
BluetoothManager $r83 = $r2.text;
Context $r20 = $r2.parent;
Context context2 = $r20;
BluetoothGattServer $r21 = $r83.openGattServer($r20, downloadsFragment$1);
if ($r21 != null) {
$r21.addService($r2.type);
}
$r2.client = $r21;
}
Session $r3 = this.listView;
if (!($r3 == null || ($r10 = $r3.this$0) == null)) {
$r10.startAdvertising($r3.props, $r3.out, $r3.debug);
}
MainActivity $r4 = this.activity;
if ($r4 != null) {
$r4.s = true;
$r4.onCreate();
$r4.handler.sendEmptyMessageDelayed(3, 35000);
}
this.c = true;
EventBus $r27 = EventBus.getDefault();
Host host = new Host(true);
$r27.post(host);
AtomicBoolean $r29 = this.context;
if ($r29 != null) {
$r29.putShort();
return;
}
return;
}
}
R$id.this$0.e("Bluetooth adaptor is off", new Object[0]);
} catch (SecurityException e) {
R$id.this$0.e("Lost bluetooth permissions", new Object[0]);
}
} else {
throw new Fragment("null cannot be cast to non-null type android.bluetooth.BluetoothManager");
}
}
public IBinder onBind(Intent intent) {
this.isBound = true;
onEvent();
stopForeground(true);
return this.Binder;
}
public void onCreate() {
R$id.this$0.d("onCreate", new Object[0]);
this.b = MeasurementDatabase.i.a(this);
Application $r6 = getApplication();
Log.get($r6, "this.application");
ImageLoader $r5 = new ImageLoader($r6);
this.p = $r5;
if ($r5 != null) {
$r5.init();
i $r7 = g.a(this);
Log.get($r7, "LocationServices.getFuse…ationProviderClient(this)");
this.a = $r7;
this.l = new b();
if (Build.VERSION.SDK_INT >= 26) {
NotificationChannel $r9 = new NotificationChannel("Smittestopp Notification Channel", "Smittestopp", 3);
NotificationChannel notificationChannel = new NotificationChannel("Smittestopp Reminders", "Smittestopp Reminders", 3);
Object $r11 = getSystemService("notification");
if ($r11 != null) {
NotificationManager $r12 = (NotificationManager) $r11;
$r12.createNotificationChannel($r9);
$r12.createNotificationChannel(notificationChannel);
} else {
throw new Fragment("null cannot be cast to non-null type android.app.NotificationManager");
}
}
this.connectivityReceiver = new ConnectivityReceiver();
IntentFilter intentFilter = new IntentFilter("android.location.PROVIDERS_CHANGED");
registerReceiver(this.connectivityReceiver, intentFilter);
this.mScreenOffReceiver = new PlaybackService$8();
IntentFilter intentFilter2 = new IntentFilter();
intentFilter2.addAction("android.bluetooth.adapter.action.STATE_CHANGED");
intentFilter2.addAction("android.bluetooth.adapter.action.CONNECTION_STATE_CHANGED");
intentFilter2.addAction("android.bluetooth.device.action.ACL_CONNECTED");
intentFilter2.addAction("android.bluetooth.device.action.ACL_DISCONNECTED");
registerReceiver(this.mScreenOffReceiver, intentFilter2);
EventBus.getDefault().register(this);
return;
}
Log.d("mDevice");
throw new NullPointerException("Null throw statement replaced by Soot");
}
public final boolean onCreateView() {
if (Logger.invoke(this)) {
return Logger.now() > this.mStartTime + ((long) ((this.from * 60) * 60));
} else if (!Logger.parse(this)) {
CoronaApp $r1 = CoronaApp.mContext;
if (!Log.equals($r1 != null ? Boolean.valueOf($r1.spanY) : null, true)) {
return false;
}
Object $r4 = getSystemService("notification");
if ($r4 != null) {
NotificationManager $r5 = (NotificationManager) $r4;
CoronaApp $r12 = CoronaApp.mContext;
if ($r12 != null && !$r12.header) {
PendingIntent $r7 = PendingIntent.getActivity(this, 0, new Intent(this, SplashActivity.class), 0);
f fVar = new f(this);
fVar.a((CharSequence) getString(R.string.persistent_notification_title));
fVar.c.icon = R$drawable.ic_stat_name;
fVar.add((CharSequence) getString(R.string.you_need_authentication));
fVar.p = 1;
fVar.a = $r7;
fVar.add(true);
if (Build.VERSION.SDK_INT >= 26) {
fVar.id = "Smittestopp Notification Channel";
}
Notification $r10 = fVar.add();
Log.get($r10, "builder.build()");
$r5.notify(13, $r10);
CoronaApp $r13 = CoronaApp.mContext;
if ($r13 != null) {
$r13.header = true;
}
}
clear();
save();
stopSelf();
return false;
}
throw new Fragment("null cannot be cast to non-null type android.app.NotificationManager");
} else {
String $r9 = Logger.getString(this);
if (!(true ^ activities.spi.Logger.parse($r9))) {
return false;
}
Application $r132 = getApplication();
Log.get($r132, "this.application");
new ImageLoader($r132).get($r9, new jackson.org.util.b());
return false;
}
}
public void onDestroy() {
BitmapManager $r6;
stopForeground(true);
if (this.first) {
clear();
}
if (this.c) {
save();
}
this.mContext = null;
ImageLoader $r1 = this.p;
if ($r1 == null) {
Log.d("mDevice");
throw new NullPointerException("Null throw statement replaced by Soot");
} else if ($r1 != null) {
DeviceClient $r2 = $r1.c;
if ($r2 != null) {
try {
$r2.closeNow();
} catch (IOException $r3) {
LinkedHashMap $r4 = new LinkedHashMap();
$r4.put("where", "IoTHubDevice::close");
Crashes.trackError($r3, $r4, (Iterable) null);
R$id.this$0.d($r3);
}
}
$r1.c = null;
$r1.b = false;
$r1.ready = false;
$r1.e = false;
BitmapManager $r62 = this.dialog;
if (!($r62 == null || !$r62.execute() || ($r6 = this.dialog) == null)) {
try {
$r6.cancel(true);
} catch (Exception $r7) {
LinkedHashMap $r42 = new LinkedHashMap();
$r42.put("where", "DataCollector::onDestroy");
Crashes.trackError($r7, $r42, (Iterable) null);
}
}
this.dialog = null;
AtomicBoolean $r8 = this.context;
if ($r8 != null) {
$r8.closeKeyBoard();
}
ConnectivityReceiver $r9 = this.connectivityReceiver;
if ($r9 != null) {
unregisterReceiver($r9);
}
unregisterReceiver(this.mScreenOffReceiver);
EventBus.getDefault().unregister(this);
super.onDestroy();
} else {
throw new NullPointerException("Null throw statement replaced by Soot");
}
}
public final void onEvent() {
this.mUserDictionaryWords = null;
this.word = null;
Object $r1 = getSystemService("notification");
if ($r1 != null) {
NotificationManager $r2 = (NotificationManager) $r1;
$r2.cancel(14);
$r2.cancel(15);
return;
}
throw new Fragment("null cannot be cast to non-null type android.app.NotificationManager");
}
public final void onEvent(jackson.org.util.util.Message message) {
if (message != null) {
boolean $z0 = false;
R$id.this$0.i(message.toString(), new Object[0]);
if (this.first) {
clear();
}
if (message.a && this.mUserDictionaryWords == null && Logger.getBoolean(this) && !this.isBound) {
int $i0 = R.string.location_reminder;
if (this.word != null) {
$i0 = R.string.location_gps_reminder;
$z0 = true;
onEvent();
}
Notification $r5 = add($i0);
this.mUserDictionaryWords = $r5;
if ($z0) {
this.word = $r5;
}
Object $r6 = getSystemService("notification");
if ($r6 != null) {
((NotificationManager) $r6).notify(14, this.mUserDictionaryWords);
return;
}
throw new Fragment("null cannot be cast to non-null type android.app.NotificationManager");
}
return;
}
Log.get(EventLog.TYPE);
throw new NullPointerException("Null throw statement replaced by Soot");
}
public final void onEvent(Pair pair) {
if (pair != null) {
boolean $z0 = false;
R$id.this$0.i(pair.toString(), new Object[0]);
if (this.c) {
save();
}
if (pair.a && this.word == null && Logger.update(this) && !this.isBound) {
int $i0 = R.string.bluetooth_reminder;
if (this.mUserDictionaryWords != null) {
$i0 = R.string.location_gps_reminder;
$z0 = true;
onEvent();
}
Notification $r5 = add($i0);
this.word = $r5;
if ($z0) {
this.mUserDictionaryWords = $r5;
}
Object $r6 = getSystemService("notification");
if ($r6 != null) {
((NotificationManager) $r6).notify(15, this.word);
return;
}
throw new Fragment("null cannot be cast to non-null type android.app.NotificationManager");
}
return;
}
Log.get(EventLog.TYPE);
throw new NullPointerException("Null throw statement replaced by Soot");
}
/* JADX WARNING: Removed duplicated region for block: B:36:0x0123 */
/* JADX WARNING: Removed duplicated region for block: B:40:0x0189 */
/* JADX WARNING: Removed duplicated region for block: B:43:0x0202 */
/* JADX WARNING: Removed duplicated region for block: B:46:0x021e */
/* JADX WARNING: Removed duplicated region for block: B:47:0x0234 */
/* JADX WARNING: Removed duplicated region for block: B:54:0x0186 A[EDGE_INSN: B:54:0x0186->B:39:0x0186 ?: BREAK , SYNTHETIC] */
/* Code decompiled incorrectly, please refer to instructions dump. */
public final void onPostExecute() {
/*
r50 = this;
r0 = r50
jackson.org.util.BitmapManager r3 = r0.dialog
if (r3 == 0) goto L_0x000e
boolean r4 = r3.execute()
r5 = 1
if (r4 != r5) goto L_0x000e
return
L_0x000e:
r0 = r50
jackson.org.util.ImageLoader r6 = r0.p
r7 = 0
if (r6 == 0) goto L_0x0267
boolean r4 = r6.b
if (r4 != 0) goto L_0x001d
r6.init()
return
L_0x001d:
java.lang.String r8 = r6.value
r5 = 1
java.lang.String[] r9 = new java.lang.String[r5]
r5 = 0
java.lang.String r10 = "."
r9[r5] = r10
java.lang.String r10 = "1.0.2"
r5 = 0
r12 = 0
r13 = 6
java.util.List r11 = activities.spi.Logger.read(r10, r9, r5, r12, r13)
int r14 = r11.size()
r5 = 3
if (r14 >= r5) goto L_0x003a
goto L_0x00e7
L_0x003a:
r5 = 0
java.lang.Object r15 = r11.get(r5)
r17 = r15
java.lang.String r17 = (java.lang.String) r17
r16 = r17
r0 = r16
int r14 = java.lang.Integer.parseInt(r0)
r5 = 1
java.lang.Object r15 = r11.get(r5)
r18 = r15
java.lang.String r18 = (java.lang.String) r18
r16 = r18
r0 = r16
int r19 = java.lang.Integer.parseInt(r0)
r5 = 2
java.lang.Object r15 = r11.get(r5)
r20 = r15
java.lang.String r20 = (java.lang.String) r20
r16 = r20
r0 = r16
int r21 = java.lang.Integer.parseInt(r0)
r5 = 1
java.lang.String[] r9 = new java.lang.String[r5]
r5 = 0
java.lang.String r10 = "."
r9[r5] = r10
r5 = 0
r12 = 0
r13 = 6
java.util.List r11 = activities.spi.Logger.read(r8, r9, r5, r12, r13)
int r22 = r11.size()
r5 = 3
r0 = r22
if (r0 == r5) goto L_0x009b
com.microsoft.appcenter.analytics.EventProperties r23 = new com.microsoft.appcenter.analytics.EventProperties
r0 = r23
r0.<init>()
java.lang.String r10 = "version"
r0 = r23
r0.e(r10, r8)
java.lang.String r10 = "Malformed version string"
r0 = r23
com.microsoft.appcenter.analytics.Analytics.trackEvent((java.lang.String) r10, (com.microsoft.appcenter.analytics.EventProperties) r0)
goto L_0x00e7
L_0x009b:
r5 = 0
java.lang.Object r15 = r11.get(r5)
r24 = r15
java.lang.String r24 = (java.lang.String) r24
r8 = r24
int r22 = java.lang.Integer.parseInt(r8)
r5 = 1
java.lang.Object r15 = r11.get(r5)
r25 = r15
java.lang.String r25 = (java.lang.String) r25
r8 = r25
int r26 = java.lang.Integer.parseInt(r8)
r5 = 2
java.lang.Object r15 = r11.get(r5)
r27 = r15
java.lang.String r27 = (java.lang.String) r27
r8 = r27
int r28 = java.lang.Integer.parseInt(r8)
r0 = r22
if (r0 > r14) goto L_0x00e9
r0 = r22
if (r0 != r14) goto L_0x00d6
r0 = r26
r1 = r19
if (r0 > r1) goto L_0x00e9
L_0x00d6:
r0 = r22
if (r0 != r14) goto L_0x00e7
r0 = r26
r1 = r19
if (r0 != r1) goto L_0x00e7
r0 = r28
r1 = r21
if (r0 <= r1) goto L_0x00e7
goto L_0x00e9
L_0x00e7:
r4 = 0
goto L_0x00ea
L_0x00e9:
r4 = 1
L_0x00ea:
if (r4 == 0) goto L_0x023e
r0 = r50
android.app.Notification r0 = r0.mContext
r29 = r0
if (r29 == 0) goto L_0x00f7
goto L_0x023e
L_0x00f7:
android.content.Intent r30 = new android.content.Intent
java.lang.String r10 = "market://details?id=no.simula.smittestopp"
android.net.Uri r31 = android.net.Uri.parse(r10)
java.lang.String r10 = "android.intent.action.VIEW"
r0 = r30
r1 = r31
r0.<init>(r10, r1)
r0 = r50
android.content.pm.PackageManager r32 = r0.getPackageManager()
r5 = 0
r0 = r32
r1 = r30
java.util.List r11 = r0.queryIntentActivities(r1, r5)
java.util.Iterator r33 = r11.iterator()
L_0x011b:
r0 = r33
boolean r4 = r0.hasNext()
if (r4 == 0) goto L_0x0186
r0 = r33
java.lang.Object r15 = r0.next()
r35 = r15
android.content.pm.ResolveInfo r35 = (android.content.pm.ResolveInfo) r35
r34 = r35
r0 = r34
android.content.pm.ActivityInfo r0 = r0.activityInfo
r36 = r0
android.content.pm.ApplicationInfo r0 = r0.applicationInfo
r37 = r0
java.lang.String r8 = r0.packageName
java.lang.String r10 = "com.android.vending"
boolean r4 = activities.tests.core.Log.equals(r8, r10)
if (r4 == 0) goto L_0x011b
r0 = r34
android.content.pm.ActivityInfo r0 = r0.activityInfo
r36 = r0
android.content.ComponentName r38 = new android.content.ComponentName
r0 = r36
android.content.pm.ApplicationInfo r0 = r0.applicationInfo
r37 = r0
java.lang.String r8 = r0.packageName
r0 = r36
java.lang.String r0 = r0.name
r16 = r0
r0 = r38
r1 = r16
r0.<init>(r8, r1)
android.content.Intent r7 = new android.content.Intent
java.lang.String r10 = "market://details?id=no.simula.smittestopp"
android.net.Uri r31 = android.net.Uri.parse(r10)
java.lang.String r10 = "android.intent.action.VIEW"
r0 = r31
r7.<init>(r10, r0)
r5 = 268435456(0x10000000, float:2.5243549E-29)
r7.addFlags(r5)
r5 = 2097152(0x200000, float:2.938736E-39)
r7.addFlags(r5)
r5 = 67108864(0x4000000, float:1.5046328E-36)
r7.addFlags(r5)
r0 = r38
r7.setComponent(r0)
L_0x0186:
if (r7 == 0) goto L_0x0189
goto L_0x01b1
L_0x0189:
android.content.Intent r7 = new android.content.Intent
java.lang.StringBuilder r39 = new java.lang.StringBuilder
r0 = r39
r0.<init>()
java.lang.String r10 = "https://play.google.com/store/apps/details?id="
r0 = r39
r0.append(r10)
java.lang.String r10 = "no.simula.smittestopp"
r0 = r39
r0.append(r10)
r0 = r39
java.lang.String r8 = r0.toString()
android.net.Uri r31 = android.net.Uri.parse(r8)
java.lang.String r10 = "android.intent.action.VIEW"
r0 = r31
r7.<init>(r10, r0)
L_0x01b1:
r5 = 0
r12 = 0
r0 = r50
android.app.PendingIntent r40 = android.app.PendingIntent.getActivity(r0, r5, r7, r12)
v7.internal.menu.f r41 = new v7.internal.menu.f
r0 = r41
r1 = r50
r0.<init>(r1)
r5 = 2131886191(0x7f12006f, float:1.9406954E38)
r0 = r50
java.lang.String r8 = r0.getString(r5)
r0 = r41
r0.a((java.lang.CharSequence) r8)
r0 = r41
android.app.Notification r0 = r0.c
r29 = r0
r5 = 2131230888(0x7f0800a8, float:1.8077841E38)
r0 = r29
r0.icon = r5
r5 = 2131886192(0x7f120070, float:1.9406956E38)
r0 = r50
java.lang.String r8 = r0.getString(r5)
r0 = r41
r0.add((java.lang.CharSequence) r8)
r5 = 1
r0 = r41
r0.p = r5
r0 = r40
r1 = r41
r1.a = r0
r5 = 1
r0 = r41
r0.add((boolean) r5)
int r14 = android.os.Build.VERSION.SDK_INT
r5 = 26
if (r14 < r5) goto L_0x0208
java.lang.String r10 = "Smittestopp Reminders"
r0 = r41
r0.id = r10
L_0x0208:
r0 = r41
android.app.Notification r29 = r0.add()
r0 = r29
r1 = r50
r1.mContext = r0
java.lang.String r10 = "notification"
r0 = r50
java.lang.Object r15 = r0.getSystemService(r10)
if (r15 == 0) goto L_0x0234
r43 = r15
android.app.NotificationManager r43 = (android.app.NotificationManager) r43
r42 = r43
r0 = r50
android.app.Notification r0 = r0.mContext
r29 = r0
r5 = 16
r0 = r42
r1 = r29
r0.notify(r5, r1)
goto L_0x023e
L_0x0234:
activities.Fragment r44 = new activities.Fragment
java.lang.String r10 = "null cannot be cast to non-null type android.app.NotificationManager"
r0 = r44
r0.<init>(r10)
throw r44
L_0x023e:
long r45 = jackson.org.util.Logger.now()
r0 = r45
r2 = r50
r2.mStartTime = r0
jackson.org.util.BitmapManager r3 = new jackson.org.util.BitmapManager
dev.simula.corona.DataCollectorService$c r47 = new dev.simula.corona.DataCollectorService$c
r0 = r47
r1 = r50
r0.<init>()
r0 = r50
r1 = r47
r3.<init>(r0, r1)
r0 = r50
r0.dialog = r3
r5 = 0
java.lang.Object[] r0 = new java.lang.Object[r5]
r48 = r0
r3.execute(r0)
return
L_0x0267:
java.lang.String r10 = "mDevice"
activities.tests.core.Log.d(r10)
java.lang.NullPointerException r49 = new java.lang.NullPointerException
java.lang.String r10 = "Null throw statement replaced by Soot"
r0 = r49
r0.<init>(r10)
throw r49
*/
throw new UnsupportedOperationException("Method not decompiled: dev.simula.corona.DataCollectorService.onPostExecute():void");
}
public void onRebind(Intent intent) {
this.isBound = true;
onEvent();
stopForeground(true);
super.onRebind(intent);
}
public int onStartCommand(Intent intent, int i, int i2) {
R$id.this$0.d("onStartCommand", new Object[0]);
if (intent != null && intent.getBooleanExtra("from-service", false)) {
Logger.create(this, false);
Logger.write(this, false);
clear();
save();
stopSelf();
}
if (intent == null || !intent.hasExtra("service-command")) {
return 2;
}
int $i0 = intent.getIntExtra("service-command", -1);
if ($i0 == 0) {
R$id.this$0.d("stop location updates", new Object[0]);
clear();
return 2;
} else if ($i0 == 1) {
R$id.this$0.d("start location updates", new Object[0]);
run();
return 2;
} else if ($i0 == 2) {
R$id.this$0.d("start bt updates", new Object[0]);
init();
return 2;
} else if ($i0 == 3) {
R$id.this$0.d("stop bt updates", new Object[0]);
save();
return 2;
} else if ($i0 == 4) {
R$id.this$0.d("start all updates", new Object[0]);
if (Logger.getBoolean(this)) {
run();
}
if (Logger.update(this)) {
init();
}
if (!intent.getBooleanExtra("auto_start", false)) {
return 2;
}
startForeground(12, add());
return 2;
} else if ($i0 != 5) {
return 2;
} else {
R$id.this$0.d("stop all updates", new Object[0]);
clear();
save();
stopSelf();
return 2;
}
}
public boolean onUnbind(Intent intent) {
this.isBound = false;
if (!get()) {
return true;
}
startForeground(12, add());
return true;
}
public final void run() {
R$id.this$0.d("Starting location updates", new Object[0]);
try {
if (!ConnectivityReceiver.parse(this)) {
R$id.this$0.e("Location services are off", new Object[0]);
return;
}
i $r4 = this.a;
if ($r4 != null) {
LocationRequest $r5 = this.x;
ByteVector $r1 = this.l;
if ($r1 != null) {
$r4.a($r5, $r1, Looper.myLooper());
this.first = true;
EventBus.getDefault().post(new Account(true));
AtomicBoolean $r9 = this.context;
if ($r9 != null) {
$r9.lazySet();
return;
}
return;
}
Log.d("locationCallback");
throw new NullPointerException("Null throw statement replaced by Soot");
}
Log.d("fusedLocationClient");
throw new NullPointerException("Null throw statement replaced by Soot");
} catch (SecurityException $r10) {
R$id.this$0.e("Lost location permissions", new Object[0]);
Crashes.trackError($r10);
}
}
public final void save() {
BluetoothLeAdvertiser $r11;
BluetoothGattServer $r7;
if (this.c) {
R$id.this$0.d("Stopping bluetooth updates", new Object[0]);
Object $r3 = getSystemService("bluetooth");
if ($r3 != null) {
BluetoothAdapter $r5 = ((BluetoothManager) $r3).getAdapter();
if ($r5 == null || !$r5.isEnabled()) {
MainActivity $r8 = this.activity;
if ($r8 != null) {
$r8.s = false;
$r8.handler.removeMessages(4);
$r8.setTitle();
}
this.c = false;
EventBus.getDefault().post(new Host(false));
return;
}
Content $r6 = this.content;
if (!($r6 == null || ($r7 = $r6.client) == null)) {
try {
$r7.close();
} catch (Exception $r15) {
R$id.this$0.d($r15);
LinkedHashMap linkedHashMap = new LinkedHashMap();
linkedHashMap.put("where", "DataCollector::stopBluetoothUpdates");
Crashes.trackError($r15, linkedHashMap, (Iterable) null);
return;
}
}
MainActivity $r82 = this.activity;
if ($r82 != null) {
$r82.s = false;
$r82.handler.removeMessages(4);
$r82.setTitle();
}
Session $r10 = this.listView;
if (!($r10 == null || ($r11 = $r10.this$0) == null)) {
$r11.stopAdvertising($r10.debug);
}
this.c = false;
EventBus $r13 = EventBus.getDefault();
Host host = new Host(false);
$r13.post(host);
return;
}
throw new Fragment("null cannot be cast to non-null type android.bluetooth.BluetoothManager");
}
R$id.this$0.d("bluetooth is already closed", new Object[0]);
}
}
.class public final Lno/simula/corona/DataCollectorService;
.super Landroid/app/Service;
.source "SourceFile"
# interfaces
.implements Lj/b/a/b0/h;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lno/simula/corona/DataCollectorService$a;
}
.end annotation
# instance fields
.field public A:Z
.field public B:Lcom/google/android/gms/location/LocationRequest;
.field public C:Le/c/a/a/e/b;
.field public D:Le/c/a/a/e/a;
.field public E:J
.field public final F:I
.field public G:Lj/b/a/d0/a;
.field public H:Landroid/app/Notification;
.field public I:Landroid/app/Notification;
.field public J:Landroid/app/Notification;
.field public K:Lno/simula/corona/MeasurementDatabase;
.field public L:Lj/b/a/f;
.field public M:Lj/b/a/h;
.field public N:Lj/b/a/b0/c;
.field public O:Z
.field public P:Lj/b/a/b0/a;
.field public Q:Lj/b/a/b0/i;
.field public R:Lj/b/a/b0/e;
.field public x:Lj/b/a/v;
.field public y:Z
.field public final z:Lj/b/a/d;
# direct methods
.method public constructor <init>()V
.locals 5
.line 1
invoke-direct {p0}, Landroid/app/Service;-><init>()V
.line 2
new-instance v0, Lj/b/a/d;
invoke-direct {v0, p0}, Lj/b/a/d;-><init>(Lno/simula/corona/DataCollectorService;)V
iput-object v0, p0, Lno/simula/corona/DataCollectorService;->z:Lj/b/a/d;
.line 3
new-instance v0, Lcom/google/android/gms/location/LocationRequest;
invoke-direct {v0}, Lcom/google/android/gms/location/LocationRequest;-><init>()V
const-wide/16 v1, 0x2ee0
.line 4
invoke-static {v1, v2}, Lcom/google/android/gms/location/LocationRequest;->a(J)V
iput-wide v1, v0, Lcom/google/android/gms/location/LocationRequest;->y:J
iget-boolean v3, v0, Lcom/google/android/gms/location/LocationRequest;->A:Z
if-nez v3, :cond_0
long-to-double v1, v1
const-wide/high16 v3, 0x4018000000000000L # 6.0
div-double/2addr v1, v3
double-to-long v1, v1
iput-wide v1, v0, Lcom/google/android/gms/location/LocationRequest;->z:J
:cond_0
const-wide/16 v1, 0x2710
.line 5
invoke-static {v1, v2}, Lcom/google/android/gms/location/LocationRequest;->a(J)V
const/4 v3, 0x1
iput-boolean v3, v0, Lcom/google/android/gms/location/LocationRequest;->A:Z
iput-wide v1, v0, Lcom/google/android/gms/location/LocationRequest;->z:J
const/16 v1, 0x64
.line 6
iput v1, v0, Lcom/google/android/gms/location/LocationRequest;->x:I
.line 7
iput-object v0, p0, Lno/simula/corona/DataCollectorService;->B:Lcom/google/android/gms/location/LocationRequest;
.line 8
invoke-static {}, Lj/b/a/a0;->a()J
move-result-wide v0
iput-wide v0, p0, Lno/simula/corona/DataCollectorService;->E:J
.line 9
iput v3, p0, Lno/simula/corona/DataCollectorService;->F:I
return-void
.end method
.method public static final a(Landroid/content/Context;)V
.locals 3
if-eqz p0, :cond_0
.line 27
new-instance v0, Landroid/content/Intent;
const-class v1, Lno/simula/corona/DataCollectorService;
invoke-direct {v0, p0, v1}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V
const/4 v1, 0x2
const-string v2, "service-command"
.line 28
invoke-virtual {v0, v2, v1}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
.line 29
invoke-virtual {p0, v0}, Landroid/content/Context;->startService(Landroid/content/Intent;)Landroid/content/ComponentName;
return-void
:cond_0
const-string p0, "context"
.line 30
invoke-static {p0}, Lh/k/b/g;->a(Ljava/lang/String;)V
const/4 p0, 0x0
throw p0
.end method
.method public static final synthetic a(Lno/simula/corona/DataCollectorService;)V
.locals 4
const/4 v0, 0x0
if-eqz p0, :cond_5
.line 140
new-instance v1, Landroid/content/Intent;
const-class v2, Lno/simula/corona/SplashActivity;
invoke-direct {v1, p0, v2}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V
const/4 v2, 0x0
.line 141
invoke-static {p0, v2, v1, v2}, Landroid/app/PendingIntent;->getActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;
move-result-object v1
.line 142
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->h()V
.line 143
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->g()V
.line 144
invoke-static {p0}, Lj/b/a/a0;->b(Landroid/content/Context;)V
.line 145
iget-object v2, p0, Lno/simula/corona/DataCollectorService;->K:Lno/simula/corona/MeasurementDatabase;
const-string v3, "mDatabase"
if-eqz v2, :cond_4
invoke-virtual {v2}, Lno/simula/corona/MeasurementDatabase;->h()Lj/b/a/b;
move-result-object v2
check-cast v2, Lj/b/a/c;
invoke-virtual {v2}, Lj/b/a/c;->a()V
.line 146
iget-object v2, p0, Lno/simula/corona/DataCollectorService;->K:Lno/simula/corona/MeasurementDatabase;
if-eqz v2, :cond_3
invoke-virtual {v2}, Lno/simula/corona/MeasurementDatabase;->i()Lj/b/a/s;
move-result-object v0
check-cast v0, Lj/b/a/t;
invoke-virtual {v0}, Lj/b/a/t;->a()V
.line 147
new-instance v0, Ld/i/a/g;
invoke-direct {v0, p0}, Ld/i/a/g;-><init>(Landroid/content/Context;)V
const v2, 0x7f120047
.line 148
invoke-virtual {p0, v2}, Landroid/app/Service;->getString(I)Ljava/lang/String;
move-result-object v2
invoke-virtual {v0, v2}, Ld/i/a/g;->b(Ljava/lang/CharSequence;)Ld/i/a/g;
const v2, 0x7f0800a8
.line 149
iget-object v3, v0, Ld/i/a/g;->O:Landroid/app/Notification;
iput v2, v3, Landroid/app/Notification;->icon:I
const v2, 0x7f120046
.line 150
invoke-virtual {p0, v2}, Landroid/app/Service;->getString(I)Ljava/lang/String;
move-result-object v2
invoke-virtual {v0, v2}, Ld/i/a/g;->a(Ljava/lang/CharSequence;)Ld/i/a/g;
const/4 v2, 0x1
.line 151
iput v2, v0, Ld/i/a/g;->l:I
.line 152
iput-object v1, v0, Ld/i/a/g;->f:Landroid/app/PendingIntent;
.line 153
invoke-virtual {v0, v2}, Ld/i/a/g;->a(Z)Ld/i/a/g;
.line 154
sget v1, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v2, 0x1a
if-lt v1, v2, :cond_0
const-string v1, "Smittestopp Reminders"
.line 155
iput-object v1, v0, Ld/i/a/g;->I:Ljava/lang/String;
.line 156
:cond_0
invoke-virtual {v0}, Ld/i/a/g;->a()Landroid/app/Notification;
move-result-object v0
const-string v1, "notification"
.line 157
invoke-virtual {p0, v1}, Landroid/app/Service;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v1
if-eqz v1, :cond_2
check-cast v1, Landroid/app/NotificationManager;
const/16 v2, 0x11
.line 158
invoke-virtual {v1, v2, v0}, Landroid/app/NotificationManager;->notify(ILandroid/app/Notification;)V
.line 159
iget-object v0, p0, Lno/simula/corona/DataCollectorService;->x:Lj/b/a/v;
if-eqz v0, :cond_1
invoke-interface {v0}, Lj/b/a/v;->f()V
.line 160
:cond_1
invoke-virtual {p0}, Landroid/app/Service;->stopSelf()V
return-void
.line 161
:cond_2
new-instance p0, Lh/e;
const-string v0, "null cannot be cast to non-null type android.app.NotificationManager"
invoke-direct {p0, v0}, Lh/e;-><init>(Ljava/lang/String;)V
throw p0
.line 162
:cond_3
invoke-static {v3}, Lh/k/b/g;->b(Ljava/lang/String;)V
throw v0
.line 163
:cond_4
invoke-static {v3}, Lh/k/b/g;->b(Ljava/lang/String;)V
throw v0
.line 164
:cond_5
throw v0
.end method
.method public static final synthetic a(Lno/simula/corona/DataCollectorService;Landroid/location/Location;)V
.locals 24
move-object/from16 v0, p0
if-eqz v0, :cond_3
.line 47
invoke-virtual/range {p1 .. p1}, Landroid/location/Location;->getLatitude()D
move-result-wide v2
.line 48
invoke-virtual/range {p1 .. p1}, Landroid/location/Location;->getLongitude()D
move-result-wide v4
.line 49
invoke-virtual/range {p1 .. p1}, Landroid/location/Location;->getAccuracy()F
move-result v6
.line 50
new-instance v7, Ljava/lang/StringBuilder;
invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
const/16 v8, 0x28
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
invoke-virtual {v7, v2, v3}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder;
const-string v2, ", "
invoke-virtual {v7, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v7, v4, v5}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder;
const-string v2, "), accuracy: "
invoke-virtual {v7, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v7, v6}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;
invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
const/4 v3, 0x0
new-array v4, v3, [Ljava/lang/Object;
.line 51
sget-object v5, Ll/a/a;->d:Ll/a/a$b;
invoke-virtual {v5, v2, v4}, Ll/a/a$b;->c(Ljava/lang/String;[Ljava/lang/Object;)V
.line 52
invoke-virtual/range {p1 .. p1}, Landroid/location/Location;->getTime()J
move-result-wide v4
const/16 v2, 0x3e8
int-to-long v6, v2
.line 53
div-long v9, v4, v6
.line 54
invoke-virtual/range {p1 .. p1}, Landroid/location/Location;->getLatitude()D
move-result-wide v4
.line 55
invoke-virtual/range {p1 .. p1}, Landroid/location/Location;->getLongitude()D
move-result-wide v6
.line 56
invoke-virtual/range {p1 .. p1}, Landroid/location/Location;->getAccuracy()F
move-result v2
float-to-double v11, v2
.line 57
invoke-virtual/range {p1 .. p1}, Landroid/location/Location;->getAltitude()D
move-result-wide v13
.line 58
invoke-virtual/range {p1 .. p1}, Landroid/location/Location;->getSpeed()F
move-result v2
float-to-double v1, v2
.line 59
sget v15, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v8, 0x1a
if-lt v15, v8, :cond_0
.line 60
invoke-virtual/range {p1 .. p1}, Landroid/location/Location;->getVerticalAccuracyMeters()F
move-result v8
move-wide/from16 v17, v4
float-to-double v3, v8
.line 61
invoke-virtual/range {p1 .. p1}, Landroid/location/Location;->getSpeedAccuracyMetersPerSecond()F
move-result v5
move-wide/from16 v19, v3
float-to-double v3, v5
move-wide/from16 v22, v3
move-wide/from16 v3, v19
move-wide/from16 v19, v22
goto :goto_0
:cond_0
move-wide/from16 v17, v4
const-wide/high16 v3, -0x4010000000000000L # -1.0
move-wide/from16 v19, v3
.line 62
:goto_0
iget-object v5, v0, Lno/simula/corona/DataCollectorService;->K:Lno/simula/corona/MeasurementDatabase;
if-eqz v5, :cond_2
invoke-virtual {v5}, Lno/simula/corona/MeasurementDatabase;->i()Lj/b/a/s;
move-result-object v5
const/4 v8, 0x1
new-array v15, v8, [Lj/b/a/r;
.line 63
new-instance v21, Lj/b/a/r;
.line 64
invoke-static/range {v17 .. v18}, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double;
move-result-object v16
invoke-static {v6, v7}, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double;
move-result-object v6
invoke-static {v11, v12}, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double;
move-result-object v7
.line 65
invoke-static {v13, v14}, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double;
move-result-object v14
invoke-static {v3, v4}, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double;
move-result-object v3
.line 66
invoke-static {v1, v2}, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double;
move-result-object v1
invoke-static/range {v19 .. v20}, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double;
move-result-object v17
const/16 v18, 0x0
move-object/from16 v8, v21
move-object/from16 v11, v16
move-object v12, v6
move-object v13, v7
move-object v2, v15
move-object v15, v3
move-object/from16 v16, v1
.line 67
invoke-direct/range {v8 .. v18}, Lj/b/a/r;-><init>(JLjava/lang/Double;Ljava/lang/Double;Ljava/lang/Double;Ljava/lang/Double;Ljava/lang/Double;Ljava/lang/Double;Ljava/lang/Double;Z)V
const/4 v1, 0x0
aput-object v21, v2, v1
.line 68
check-cast v5, Lj/b/a/t;
.line 69
iget-object v1, v5, Lj/b/a/t;->a:Ld/u/g;
invoke-virtual {v1}, Ld/u/g;->b()V
.line 70
iget-object v1, v5, Lj/b/a/t;->a:Ld/u/g;
invoke-virtual {v1}, Ld/u/g;->c()V
.line 71
:try_start_0
iget-object v1, v5, Lj/b/a/t;->b:Ld/u/b;
invoke-virtual {v1, v2}, Ld/u/b;->a([Ljava/lang/Object;)V
.line 72
iget-object v1, v5, Lj/b/a/t;->a:Ld/u/g;
invoke-virtual {v1}, Ld/u/g;->g()V
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
.line 73
iget-object v1, v5, Lj/b/a/t;->a:Ld/u/g;
invoke-virtual {v1}, Ld/u/g;->d()V
.line 74
invoke-virtual/range {p0 .. p0}, Lno/simula/corona/DataCollectorService;->i()Z
move-result v1
if-eqz v1, :cond_1
.line 75
invoke-virtual/range {p0 .. p0}, Lno/simula/corona/DataCollectorService;->f()V
:cond_1
return-void
:catchall_0
move-exception v0
.line 76
iget-object v1, v5, Lj/b/a/t;->a:Ld/u/g;
invoke-virtual {v1}, Ld/u/g;->d()V
.line 77
throw v0
:cond_2
const-string v0, "mDatabase"
.line 78
invoke-static {v0}, Lh/k/b/g;->b(Ljava/lang/String;)V
const/4 v0, 0x0
throw v0
:cond_3
const/4 v0, 0x0
.line 79
throw v0
.end method
.method public static final synthetic a(Lno/simula/corona/DataCollectorService;Ljava/lang/String;Lj/b/a/o;)V
.locals 9
const/4 v0, 0x0
if-eqz p0, :cond_8
.line 1
iget-object v1, p2, Lj/b/a/o;->a:Ljava/util/List;
invoke-interface {v1}, Ljava/util/List;->size()I
move-result v1
const/4 v2, 0x0
const/4 v3, 0x0
:goto_0
if-ge v3, v1, :cond_7
.line 2
iget-object v4, p2, Lj/b/a/o;->a:Ljava/util/List;
invoke-interface {v4, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v4
check-cast v4, Lh/c;
.line 3
iget-object v5, v4, Lh/c;->x:Ljava/lang/Object;
.line 4
check-cast v5, Ljava/util/List;
.line 5
iget-object v4, v4, Lh/c;->y:Ljava/lang/Object;
.line 6
check-cast v4, Lorg/json/JSONObject;
.line 7
invoke-virtual {v4}, Lorg/json/JSONObject;->length()I
move-result v6
if-lez v6, :cond_6
const-string v6, "events"
invoke-virtual {v4, v6}, Lorg/json/JSONObject;->getJSONArray(Ljava/lang/String;)Lorg/json/JSONArray;
move-result-object v6
invoke-virtual {v6}, Lorg/json/JSONArray;->length()I
move-result v6
if-lez v6, :cond_6
.line 8
new-instance v6, Lcom/microsoft/azure/sdk/iot/device/Message;
invoke-virtual {v4}, Lorg/json/JSONObject;->toString()Ljava/lang/String;
move-result-object v4
invoke-direct {v6, v4}, Lcom/microsoft/azure/sdk/iot/device/Message;-><init>(Ljava/lang/String;)V
const-string v4, "eventType"
.line 9
invoke-virtual {v6, v4, p1}, Lcom/microsoft/azure/sdk/iot/device/Message;->setProperty(Ljava/lang/String;Ljava/lang/String;)V
.line 10
iget-object v4, p0, Lno/simula/corona/DataCollectorService;->M:Lj/b/a/h;
if-eqz v4, :cond_5
new-instance v7, Lno/simula/corona/DataCollectorService$a;
invoke-direct {v7, p0, p1, v5}, Lno/simula/corona/DataCollectorService$a;-><init>(Lno/simula/corona/DataCollectorService;Ljava/lang/String;Ljava/util/List;)V
.line 11
iget-boolean v5, v4, Lj/b/a/h;->c:Z
if-eqz v5, :cond_4
iget-object v5, v4, Lj/b/a/h;->b:Lcom/microsoft/azure/sdk/iot/device/DeviceClient;
if-nez v5, :cond_0
goto :goto_1
.line 12
:cond_0
invoke-virtual {v6}, Lcom/microsoft/azure/sdk/iot/device/Message;->getContentType()Ljava/lang/String;
move-result-object v5
iget-object v8, v4, Lj/b/a/h;->h:Ljava/lang/String;
invoke-static {v5, v8}, Lh/k/b/g;->a(Ljava/lang/Object;Ljava/lang/Object;)Z
move-result v5
xor-int/lit8 v5, v5, 0x1
if-eqz v5, :cond_1
.line 13
iget-object v5, v4, Lj/b/a/h;->h:Ljava/lang/String;
invoke-virtual {v6, v5}, Lcom/microsoft/azure/sdk/iot/device/Message;->setContentTypeFinal(Ljava/lang/String;)V
.line 14
:cond_1
invoke-virtual {v6}, Lcom/microsoft/azure/sdk/iot/device/Message;->getContentEncoding()Ljava/lang/String;
move-result-object v5
iget-object v8, v4, Lj/b/a/h;->g:Ljava/lang/String;
invoke-static {v5, v8}, Lh/k/b/g;->a(Ljava/lang/Object;Ljava/lang/Object;)Z
move-result v5
xor-int/lit8 v5, v5, 0x1
if-eqz v5, :cond_2
.line 15
iget-object v5, v4, Lj/b/a/h;->g:Ljava/lang/String;
invoke-virtual {v6, v5}, Lcom/microsoft/azure/sdk/iot/device/Message;->setContentEncoding(Ljava/lang/String;)V
.line 16
:cond_2
:try_start_0
iget-object v4, v4, Lj/b/a/h;->b:Lcom/microsoft/azure/sdk/iot/device/DeviceClient;
if-eqz v4, :cond_3
invoke-virtual {v4, v6, v7, v0}, Lcom/microsoft/azure/sdk/iot/device/InternalClient;->sendEventAsync(Lcom/microsoft/azure/sdk/iot/device/Message;Lcom/microsoft/azure/sdk/iot/device/IotHubEventCallback;Ljava/lang/Object;)V
:cond_3
const-string v4, "Pushed message"
new-array v5, v2, [Ljava/lang/Object;
.line 17
sget-object v6, Ll/a/a;->d:Ll/a/a$b;
invoke-virtual {v6, v4, v5}, Ll/a/a$b;->c(Ljava/lang/String;[Ljava/lang/Object;)V
:try_end_0
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
goto :goto_2
:catch_0
move-exception v4
.line 18
new-instance v5, Ljava/util/LinkedHashMap;
invoke-direct {v5}, Ljava/util/LinkedHashMap;-><init>()V
const-string v6, "where"
const-string v8, "IoTHubDevice::sendEventAsync"
.line 19
invoke-virtual {v5, v6, v8}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 20
invoke-static {v4, v5, v0}, Lcom/microsoft/appcenter/crashes/Crashes;->trackError(Ljava/lang/Throwable;Ljava/util/Map;Ljava/lang/Iterable;)V
.line 21
sget-object v5, Ll/a/a;->d:Ll/a/a$b;
invoke-virtual {v5, v4}, Ll/a/a$b;->a(Ljava/lang/Throwable;)V
.line 22
sget-object v4, Lcom/microsoft/azure/sdk/iot/device/IotHubStatusCode;->ERROR:Lcom/microsoft/azure/sdk/iot/device/IotHubStatusCode;
new-instance v5, Ljava/util/ArrayList;
invoke-direct {v5}, Ljava/util/ArrayList;-><init>()V
invoke-interface {v7, v4, v5}, Lcom/microsoft/azure/sdk/iot/device/IotHubEventCallback;->execute(Lcom/microsoft/azure/sdk/iot/device/IotHubStatusCode;Ljava/lang/Object;)V
goto :goto_2
:cond_4
:goto_1
new-array v4, v2, [Ljava/lang/Object;
.line 23
sget-object v5, Ll/a/a;->d:Ll/a/a$b;
const-string v6, "Device is not connected or provisioned"
invoke-virtual {v5, v6, v4}, Ll/a/a$b;->c(Ljava/lang/String;[Ljava/lang/Object;)V
.line 24
sget-object v4, Lcom/microsoft/azure/sdk/iot/device/IotHubStatusCode;->ERROR:Lcom/microsoft/azure/sdk/iot/device/IotHubStatusCode;
new-instance v5, Ljava/util/ArrayList;
invoke-direct {v5}, Ljava/util/ArrayList;-><init>()V
invoke-interface {v7, v4, v5}, Lcom/microsoft/azure/sdk/iot/device/IotHubEventCallback;->execute(Lcom/microsoft/azure/sdk/iot/device/IotHubStatusCode;Ljava/lang/Object;)V
goto :goto_2
:cond_5
const-string p0, "mDevice"
.line 25
invoke-static {p0}, Lh/k/b/g;->b(Ljava/lang/String;)V
throw v0
:cond_6
:goto_2
add-int/lit8 v3, v3, 0x1
goto/16 :goto_0
:cond_7
return-void
.line 26
:cond_8
throw v0
.end method
.method public static final synthetic a(Lno/simula/corona/DataCollectorService;Ljava/lang/String;Ljava/util/List;)V
.locals 6
const/4 v0, 0x0
if-eqz p0, :cond_9
.line 80
invoke-virtual {p1}, Ljava/lang/String;->hashCode()I
move-result v1
const v2, 0x190aa
const-string v3, "mDatabase"
const-string v4, ")"
const/4 v5, 0x1
if-eq v1, v2, :cond_4
const v2, 0x755ac2ae
if-eq v1, v2, :cond_0
goto/16 :goto_4
:cond_0
const-string v1, "bluetooth"
.line 81
invoke-virtual {p1, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_8
iget-object p0, p0, Lno/simula/corona/DataCollectorService;->K:Lno/simula/corona/MeasurementDatabase;
if-eqz p0, :cond_3
invoke-virtual {p0}, Lno/simula/corona/MeasurementDatabase;->h()Lj/b/a/b;
move-result-object p0
check-cast p0, Lj/b/a/c;
.line 82
iget-object p1, p0, Lj/b/a/c;->a:Ld/u/g;
invoke-virtual {p1}, Ld/u/g;->b()V
.line 83
new-instance p1, Ljava/lang/StringBuilder;
invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V
const-string v0, "UPDATE bluetoothcontact SET isUploaded = 1 WHERE id in ("
.line 84
invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 85
invoke-interface {p2}, Ljava/util/List;->size()I
move-result v0
.line 86
invoke-static {p1, v0}, Ld/u/m/c;->a(Ljava/lang/StringBuilder;I)V
.line 87
invoke-virtual {p1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 88
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
.line 89
iget-object v0, p0, Lj/b/a/c;->a:Ld/u/g;
invoke-virtual {v0, p1}, Ld/u/g;->a(Ljava/lang/String;)Ld/w/a/f/f;
move-result-object p1
.line 90
invoke-interface {p2}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object p2
:goto_0
invoke-interface {p2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_2
invoke-interface {p2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/Integer;
if-nez v0, :cond_1
.line 91
iget-object v0, p1, Ld/w/a/f/e;->x:Landroid/database/sqlite/SQLiteProgram;
invoke-virtual {v0, v5}, Landroid/database/sqlite/SQLiteProgram;->bindNull(I)V
goto :goto_1
.line 92
:cond_1
invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I
move-result v0
int-to-long v0, v0
.line 93
iget-object v2, p1, Ld/w/a/f/e;->x:Landroid/database/sqlite/SQLiteProgram;
invoke-virtual {v2, v5, v0, v1}, Landroid/database/sqlite/SQLiteProgram;->bindLong(IJ)V
:goto_1
add-int/lit8 v5, v5, 0x1
goto :goto_0
.line 94
:cond_2
iget-object p2, p0, Lj/b/a/c;->a:Ld/u/g;
invoke-virtual {p2}, Ld/u/g;->c()V
.line 95
:try_start_0
invoke-virtual {p1}, Ld/w/a/f/f;->a()I
.line 96
iget-object p1, p0, Lj/b/a/c;->a:Ld/u/g;
invoke-virtual {p1}, Ld/u/g;->g()V
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
.line 97
iget-object p0, p0, Lj/b/a/c;->a:Ld/u/g;
invoke-virtual {p0}, Ld/u/g;->d()V
goto/16 :goto_5
:catchall_0
move-exception p1
iget-object p0, p0, Lj/b/a/c;->a:Ld/u/g;
invoke-virtual {p0}, Ld/u/g;->d()V
.line 98
throw p1
.line 99
:cond_3
invoke-static {v3}, Lh/k/b/g;->b(Ljava/lang/String;)V
throw v0
:cond_4
const-string v1, "gps"
.line 100
invoke-virtual {p1, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_8
iget-object p0, p0, Lno/simula/corona/DataCollectorService;->K:Lno/simula/corona/MeasurementDatabase;
if-eqz p0, :cond_7
invoke-virtual {p0}, Lno/simula/corona/MeasurementDatabase;->i()Lj/b/a/s;
move-result-object p0
check-cast p0, Lj/b/a/t;
.line 101
iget-object p1, p0, Lj/b/a/t;->a:Ld/u/g;
invoke-virtual {p1}, Ld/u/g;->b()V
.line 102
new-instance p1, Ljava/lang/StringBuilder;
invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V
const-string v0, "UPDATE measurement SET isUploaded = 1 WHERE id in ("
.line 103
invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 104
invoke-interface {p2}, Ljava/util/List;->size()I
move-result v0
.line 105
invoke-static {p1, v0}, Ld/u/m/c;->a(Ljava/lang/StringBuilder;I)V
.line 106
invoke-virtual {p1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 107
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
.line 108
iget-object v0, p0, Lj/b/a/t;->a:Ld/u/g;
invoke-virtual {v0, p1}, Ld/u/g;->a(Ljava/lang/String;)Ld/w/a/f/f;
move-result-object p1
.line 109
invoke-interface {p2}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object p2
:goto_2
invoke-interface {p2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_6
invoke-interface {p2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/Integer;
if-nez v0, :cond_5
.line 110
iget-object v0, p1, Ld/w/a/f/e;->x:Landroid/database/sqlite/SQLiteProgram;
invoke-virtual {v0, v5}, Landroid/database/sqlite/SQLiteProgram;->bindNull(I)V
goto :goto_3
.line 111
:cond_5
invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I
move-result v0
int-to-long v0, v0
.line 112
iget-object v2, p1, Ld/w/a/f/e;->x:Landroid/database/sqlite/SQLiteProgram;
invoke-virtual {v2, v5, v0, v1}, Landroid/database/sqlite/SQLiteProgram;->bindLong(IJ)V
:goto_3
add-int/lit8 v5, v5, 0x1
goto :goto_2
.line 113
:cond_6
iget-object p2, p0, Lj/b/a/t;->a:Ld/u/g;
invoke-virtual {p2}, Ld/u/g;->c()V
.line 114
:try_start_1
invoke-virtual {p1}, Ld/w/a/f/f;->a()I
.line 115
iget-object p1, p0, Lj/b/a/t;->a:Ld/u/g;
invoke-virtual {p1}, Ld/u/g;->g()V
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_1
.line 116
iget-object p0, p0, Lj/b/a/t;->a:Ld/u/g;
invoke-virtual {p0}, Ld/u/g;->d()V
goto :goto_5
:catchall_1
move-exception p1
iget-object p0, p0, Lj/b/a/t;->a:Ld/u/g;
invoke-virtual {p0}, Ld/u/g;->d()V
.line 117
throw p1
.line 118
:cond_7
invoke-static {v3}, Lh/k/b/g;->b(Ljava/lang/String;)V
throw v0
.line 119
:cond_8
:goto_4
new-instance p0, Lcom/microsoft/appcenter/analytics/EventProperties;
invoke-direct {p0}, Lcom/microsoft/appcenter/analytics/EventProperties;-><init>()V
const-string p2, "eventType"
invoke-virtual {p0, p2, p1}, Lcom/microsoft/appcenter/analytics/EventProperties;->set(Ljava/lang/String;Ljava/lang/String;)Lcom/microsoft/appcenter/analytics/EventProperties;
const-string p1, "Mark upload failed"
.line 120
invoke-static {p1, p0}, Lcom/microsoft/appcenter/analytics/Analytics;->trackEvent(Ljava/lang/String;Lcom/microsoft/appcenter/analytics/EventProperties;)V
:goto_5
return-void
.line 121
:cond_9
throw v0
.end method
.method public static final b(Landroid/content/Context;)V
.locals 3
if-eqz p0, :cond_0
.line 1
new-instance v0, Landroid/content/Intent;
const-class v1, Lno/simula/corona/DataCollectorService;
invoke-direct {v0, p0, v1}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V
const/4 v1, 0x1
const-string v2, "service-command"
.line 2
invoke-virtual {v0, v2, v1}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
.line 3
invoke-virtual {p0, v0}, Landroid/content/Context;->startService(Landroid/content/Intent;)Landroid/content/ComponentName;
return-void
:cond_0
const-string p0, "context"
.line 4
invoke-static {p0}, Lh/k/b/g;->a(Ljava/lang/String;)V
const/4 p0, 0x0
throw p0
.end method
# virtual methods
.method public final a()Landroid/app/Notification;
.locals 6
.line 31
new-instance v0, Landroid/content/Intent;
const-class v1, Lno/simula/corona/DataCollectorService;
invoke-direct {v0, p0, v1}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V
const/4 v1, 0x1
const-string v2, "from-service"
.line 32
invoke-virtual {v0, v2, v1}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Z)Landroid/content/Intent;
const/4 v2, 0x0
const/high16 v3, 0x8000000
.line 33
invoke-static {p0, v2, v0, v3}, Landroid/app/PendingIntent;->getService(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;
move-result-object v0
.line 34
new-instance v3, Landroid/content/Intent;
const-class v4, Lno/simula/corona/MainActivity;
invoke-direct {v3, p0, v4}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V
const v4, 0x10008000
.line 35
invoke-virtual {v3, v4}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;
.line 36
invoke-static {p0, v2, v3, v2}, Landroid/app/PendingIntent;->getActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;
move-result-object v2
.line 37
new-instance v3, Ld/i/a/g;
invoke-direct {v3, p0}, Ld/i/a/g;-><init>(Landroid/content/Context;)V
const v4, 0x7f120080
.line 38
invoke-virtual {p0, v4}, Landroid/app/Service;->getString(I)Ljava/lang/String;
move-result-object v4
invoke-virtual {v3, v4}, Ld/i/a/g;->b(Ljava/lang/CharSequence;)Ld/i/a/g;
.line 39
iget-object v4, v3, Ld/i/a/g;->O:Landroid/app/Notification;
const v5, 0x7f0800a8
iput v5, v4, Landroid/app/Notification;->icon:I
const v4, 0x7f120073
.line 40
invoke-virtual {p0, v4}, Landroid/app/Service;->getString(I)Ljava/lang/String;
move-result-object v4
invoke-virtual {v3, v4}, Ld/i/a/g;->a(Ljava/lang/CharSequence;)Ld/i/a/g;
.line 41
iput v1, v3, Ld/i/a/g;->l:I
const v1, 0x7f0800a9
const v4, 0x7f120093
.line 42
invoke-virtual {p0, v4}, Landroid/app/Service;->getString(I)Ljava/lang/String;
move-result-object v4
invoke-virtual {v3, v1, v4, v0}, Ld/i/a/g;->a(ILjava/lang/CharSequence;Landroid/app/PendingIntent;)Ld/i/a/g;
const v0, 0x7f0800a4
const v1, 0x7f120078
.line 43
invoke-virtual {p0, v1}, Landroid/app/Service;->getString(I)Ljava/lang/String;
move-result-object v1
invoke-virtual {v3, v0, v1, v2}, Ld/i/a/g;->a(ILjava/lang/CharSequence;Landroid/app/PendingIntent;)Ld/i/a/g;
.line 44
sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v1, 0x1a
if-lt v0, v1, :cond_0
const-string v0, "Smittestopp Notification Channel"
.line 45
iput-object v0, v3, Ld/i/a/g;->I:Ljava/lang/String;
.line 46
:cond_0
invoke-virtual {v3}, Ld/i/a/g;->a()Landroid/app/Notification;
move-result-object v0
const-string v1, "builder.build()"
invoke-static {v0, v1}, Lh/k/b/g;->a(Ljava/lang/Object;Ljava/lang/String;)V
return-object v0
.end method
.method public final a(I)Landroid/app/Notification;
.locals 3
.line 165
new-instance v0, Landroid/content/Intent;
const-class v1, Lno/simula/corona/SplashActivity;
invoke-direct {v0, p0, v1}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V
const/4 v1, 0x0
.line 166
invoke-static {p0, v1, v0, v1}, Landroid/app/PendingIntent;->getActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;
move-result-object v0
.line 167
new-instance v1, Ld/i/a/g;
invoke-direct {v1, p0}, Ld/i/a/g;-><init>(Landroid/content/Context;)V
.line 168
invoke-virtual {p0, p1}, Landroid/app/Service;->getString(I)Ljava/lang/String;
move-result-object p1
invoke-virtual {v1, p1}, Ld/i/a/g;->b(Ljava/lang/CharSequence;)Ld/i/a/g;
.line 169
iget-object p1, v1, Ld/i/a/g;->O:Landroid/app/Notification;
const v2, 0x7f0800a8
iput v2, p1, Landroid/app/Notification;->icon:I
const p1, 0x7f120087
.line 170
invoke-virtual {p0, p1}, Landroid/app/Service;->getString(I)Ljava/lang/String;
move-result-object p1
invoke-virtual {v1, p1}, Ld/i/a/g;->a(Ljava/lang/CharSequence;)Ld/i/a/g;
const/4 p1, 0x1
.line 171
iput p1, v1, Ld/i/a/g;->l:I
.line 172
iput-object v0, v1, Ld/i/a/g;->f:Landroid/app/PendingIntent;
.line 173
invoke-virtual {v1, p1}, Ld/i/a/g;->a(Z)Ld/i/a/g;
.line 174
sget p1, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v0, 0x1a
if-lt p1, v0, :cond_0
const-string p1, "Smittestopp Reminders"
.line 175
iput-object p1, v1, Ld/i/a/g;->I:Ljava/lang/String;
.line 176
:cond_0
invoke-virtual {v1}, Ld/i/a/g;->a()Landroid/app/Notification;
move-result-object p1
const-string v0, "notification.build()"
invoke-static {p1, v0}, Lh/k/b/g;->a(Ljava/lang/Object;Ljava/lang/String;)V
return-object p1
.end method
.method public a(Ljava/lang/String;IIJ)V
.locals 13
move-object v0, p1
const/4 v1, 0x0
if-eqz v0, :cond_2
.line 122
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "found connection to "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v3, ", signal strength "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move v5, p2
invoke-virtual {v2, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
const/4 v8, 0x0
new-array v3, v8, [Ljava/lang/Object;
.line 123
sget-object v4, Ll/a/a;->d:Ll/a/a$b;
invoke-virtual {v4, v2, v3}, Ll/a/a$b;->c(Ljava/lang/String;[Ljava/lang/Object;)V
const/16 v2, 0x3e8
int-to-long v2, v2
.line 124
div-long v2, p4, v2
move-object v9, p0
.line 125
iget-object v4, v9, Lno/simula/corona/DataCollectorService;->K:Lno/simula/corona/MeasurementDatabase;
if-eqz v4, :cond_1
invoke-virtual {v4}, Lno/simula/corona/MeasurementDatabase;->h()Lj/b/a/b;
move-result-object v10
const/4 v1, 0x1
new-array v11, v1, [Lj/b/a/a;
.line 126
new-instance v12, Lj/b/a/a;
const/4 v7, 0x0
move-object v1, v12
move-object v4, p1
move v5, p2
move/from16 v6, p3
.line 127
invoke-direct/range {v1 .. v7}, Lj/b/a/a;-><init>(JLjava/lang/String;IIZ)V
aput-object v12, v11, v8
.line 128
check-cast v10, Lj/b/a/c;
.line 129
iget-object v0, v10, Lj/b/a/c;->a:Ld/u/g;
invoke-virtual {v0}, Ld/u/g;->b()V
.line 130
iget-object v0, v10, Lj/b/a/c;->a:Ld/u/g;
invoke-virtual {v0}, Ld/u/g;->c()V
.line 131
:try_start_0
iget-object v0, v10, Lj/b/a/c;->b:Ld/u/b;
invoke-virtual {v0, v11}, Ld/u/b;->a([Ljava/lang/Object;)V
.line 132
iget-object v0, v10, Lj/b/a/c;->a:Ld/u/g;
invoke-virtual {v0}, Ld/u/g;->g()V
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
.line 133
iget-object v0, v10, Lj/b/a/c;->a:Ld/u/g;
invoke-virtual {v0}, Ld/u/g;->d()V
.line 134
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->i()Z
move-result v0
if-eqz v0, :cond_0
.line 135
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->f()V
:cond_0
return-void
:catchall_0
move-exception v0
.line 136
iget-object v1, v10, Lj/b/a/c;->a:Ld/u/g;
invoke-virtual {v1}, Ld/u/g;->d()V
.line 137
throw v0
:cond_1
const-string v0, "mDatabase"
.line 138
invoke-static {v0}, Lh/k/b/g;->b(Ljava/lang/String;)V
throw v1
:cond_2
move-object v9, p0
const-string v0, "deviceId"
.line 139
invoke-static {v0}, Lh/k/b/g;->a(Ljava/lang/String;)V
throw v1
.end method
.method public final b()Z
.locals 1
.line 5
iget-boolean v0, p0, Lno/simula/corona/DataCollectorService;->y:Z
if-nez v0, :cond_1
iget-boolean v0, p0, Lno/simula/corona/DataCollectorService;->O:Z
if-eqz v0, :cond_0
goto :goto_0
:cond_0
const/4 v0, 0x0
goto :goto_1
:cond_1
:goto_0
const/4 v0, 0x1
:goto_1
return v0
.end method
.method public final c()V
.locals 2
const/4 v0, 0x0
.line 1
iput-object v0, p0, Lno/simula/corona/DataCollectorService;->H:Landroid/app/Notification;
.line 2
iput-object v0, p0, Lno/simula/corona/DataCollectorService;->I:Landroid/app/Notification;
const-string v0, "notification"
.line 3
invoke-virtual {p0, v0}, Landroid/app/Service;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
if-eqz v0, :cond_0
check-cast v0, Landroid/app/NotificationManager;
const/16 v1, 0xe
.line 4
invoke-virtual {v0, v1}, Landroid/app/NotificationManager;->cancel(I)V
const/16 v1, 0xf
.line 5
invoke-virtual {v0, v1}, Landroid/app/NotificationManager;->cancel(I)V
return-void
.line 6
:cond_0
new-instance v0, Lh/e;
const-string v1, "null cannot be cast to non-null type android.app.NotificationManager"
invoke-direct {v0, v1}, Lh/e;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public final d()V
.locals 11
.line 1
iget-object v0, p0, Lno/simula/corona/DataCollectorService;->R:Lj/b/a/b0/e;
const/4 v1, 0x0
const/4 v2, 0x1
if-eqz v0, :cond_0
iget-object v0, p0, Lno/simula/corona/DataCollectorService;->P:Lj/b/a/b0/a;
if-eqz v0, :cond_0
iget-object v0, p0, Lno/simula/corona/DataCollectorService;->Q:Lj/b/a/b0/i;
if-eqz v0, :cond_0
const/4 v0, 0x1
goto :goto_0
:cond_0
const/4 v0, 0x0
:goto_0
const-string v3, "null cannot be cast to non-null type android.bluetooth.BluetoothManager"
const-string v4, "bluetooth"
if-nez v0, :cond_4
const-string v0, "bluetoothManager.adapter"
new-array v5, v1, [Ljava/lang/Object;
.line 2
sget-object v6, Ll/a/a;->d:Ll/a/a$b;
const-string v7, "Initializing bluetooth components"
invoke-virtual {v6, v7, v5}, Ll/a/a$b;->a(Ljava/lang/String;[Ljava/lang/Object;)V
.line 3
invoke-virtual {p0, v4}, Landroid/app/Service;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v5
if-eqz v5, :cond_3
check-cast v5, Landroid/bluetooth/BluetoothManager;
.line 4
:try_start_0
invoke-virtual {v5}, Landroid/bluetooth/BluetoothManager;->getAdapter()Landroid/bluetooth/BluetoothAdapter;
move-result-object v6
if-eqz v6, :cond_2
invoke-virtual {v6}, Landroid/bluetooth/BluetoothAdapter;->isEnabled()Z
move-result v6
if-ne v6, v2, :cond_2
.line 5
invoke-virtual {v5}, Landroid/bluetooth/BluetoothManager;->getAdapter()Landroid/bluetooth/BluetoothAdapter;
move-result-object v6
invoke-static {v6, v0}, Lh/k/b/g;->a(Ljava/lang/Object;Ljava/lang/String;)V
invoke-virtual {v6}, Landroid/bluetooth/BluetoothAdapter;->getBluetoothLeAdvertiser()Landroid/bluetooth/le/BluetoothLeAdvertiser;
move-result-object v6
if-nez v6, :cond_1
const-string v6, "Le advertiser is not supported on this device"
new-array v7, v1, [Ljava/lang/Object;
.line 6
sget-object v8, Ll/a/a;->d:Ll/a/a$b;
invoke-virtual {v8, v6, v7}, Ll/a/a$b;->d(Ljava/lang/String;[Ljava/lang/Object;)V
const-string v6, "LeAdvertise"
.line 7
new-instance v7, Lcom/microsoft/appcenter/analytics/EventProperties;
invoke-direct {v7}, Lcom/microsoft/appcenter/analytics/EventProperties;-><init>()V
const-string v8, "what"
const-string v9, "Not supported"
.line 8
invoke-virtual {v7, v8, v9}, Lcom/microsoft/appcenter/analytics/EventProperties;->set(Ljava/lang/String;Ljava/lang/String;)Lcom/microsoft/appcenter/analytics/EventProperties;
const-string v8, "model"
.line 9
new-instance v9, Ljava/lang/StringBuilder;
invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
sget-object v10, Landroid/os/Build;->MANUFACTURER:Ljava/lang/String;
invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const/16 v10, 0x20
invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
sget-object v10, Landroid/os/Build;->MODEL:Ljava/lang/String;
invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v9
invoke-virtual {v7, v8, v9}, Lcom/microsoft/appcenter/analytics/EventProperties;->set(Ljava/lang/String;Ljava/lang/String;)Lcom/microsoft/appcenter/analytics/EventProperties;
.line 10
invoke-static {v6, v7}, Lcom/microsoft/appcenter/analytics/Analytics;->trackEvent(Ljava/lang/String;Lcom/microsoft/appcenter/analytics/EventProperties;)V
.line 11
:cond_1
new-instance v6, Lj/b/a/b0/e;
invoke-direct {v6, p0, v5}, Lj/b/a/b0/e;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothManager;)V
iput-object v6, p0, Lno/simula/corona/DataCollectorService;->R:Lj/b/a/b0/e;
.line 12
new-instance v6, Lj/b/a/b0/a;
invoke-virtual {v5}, Landroid/bluetooth/BluetoothManager;->getAdapter()Landroid/bluetooth/BluetoothAdapter;
move-result-object v5
invoke-static {v5, v0}, Lh/k/b/g;->a(Ljava/lang/Object;Ljava/lang/String;)V
invoke-virtual {v5}, Landroid/bluetooth/BluetoothAdapter;->getBluetoothLeAdvertiser()Landroid/bluetooth/le/BluetoothLeAdvertiser;
move-result-object v0
invoke-direct {v6, v0}, Lj/b/a/b0/a;-><init>(Landroid/bluetooth/le/BluetoothLeAdvertiser;)V
iput-object v6, p0, Lno/simula/corona/DataCollectorService;->P:Lj/b/a/b0/a;
.line 13
new-instance v0, Lj/b/a/b0/i;
.line 14
invoke-virtual {p0}, Landroid/app/Service;->getApplication()Landroid/app/Application;
move-result-object v5
const-string v6, "this.application"
invoke-static {v5, v6}, Lh/k/b/g;->a(Ljava/lang/Object;Ljava/lang/String;)V
.line 15
invoke-static {}, Lj/a/a/a/a/a/a;->a()Lj/a/a/a/a/a/a;
move-result-object v6
const-string v7, "BluetoothLeScannerCompat.getScanner()"
invoke-static {v6, v7}, Lh/k/b/g;->a(Ljava/lang/Object;Ljava/lang/String;)V
.line 16
invoke-direct {v0, v5, p0, v6}, Lj/b/a/b0/i;-><init>(Landroid/app/Application;Lj/b/a/b0/h;Lj/a/a/a/a/a/a;)V
iput-object v0, p0, Lno/simula/corona/DataCollectorService;->Q:Lj/b/a/b0/i;
goto :goto_1
:cond_2
const-string v0, "Bluetooth adapter is null"
new-array v5, v1, [Ljava/lang/Object;
.line 17
sget-object v6, Ll/a/a;->d:Ll/a/a$b;
invoke-virtual {v6, v0, v5}, Ll/a/a$b;->a(Ljava/lang/String;[Ljava/lang/Object;)V
:try_end_0
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
goto :goto_1
:catch_0
move-exception v0
.line 18
new-instance v5, Ljava/util/LinkedHashMap;
invoke-direct {v5}, Ljava/util/LinkedHashMap;-><init>()V
const-string v6, "where"
const-string v7, "DataCollector::initializeBluetooth"
.line 19
invoke-virtual {v5, v6, v7}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
const/4 v6, 0x0
.line 20
invoke-static {v0, v5, v6}, Lcom/microsoft/appcenter/crashes/Crashes;->trackError(Ljava/lang/Throwable;Ljava/util/Map;Ljava/lang/Iterable;)V
goto :goto_1
.line 21
:cond_3
new-instance v0, Lh/e;
invoke-direct {v0, v3}, Lh/e;-><init>(Ljava/lang/String;)V
throw v0
.line 22
:cond_4
:goto_1
invoke-virtual {p0, v4}, Landroid/app/Service;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
if-eqz v0, :cond_b
check-cast v0, Landroid/bluetooth/BluetoothManager;
new-array v3, v1, [Ljava/lang/Object;
.line 23
sget-object v4, Ll/a/a;->d:Ll/a/a$b;
const-string v5, "Starting bluetooth updates"
invoke-virtual {v4, v5, v3}, Ll/a/a$b;->c(Ljava/lang/String;[Ljava/lang/Object;)V
.line 24
:try_start_1
invoke-virtual {v0}, Landroid/bluetooth/BluetoothManager;->getAdapter()Landroid/bluetooth/BluetoothAdapter;
move-result-object v0
if-eqz v0, :cond_9
invoke-virtual {v0}, Landroid/bluetooth/BluetoothAdapter;->isEnabled()Z
move-result v0
if-ne v0, v2, :cond_9
.line 25
iget-object v0, p0, Lno/simula/corona/DataCollectorService;->R:Lj/b/a/b0/e;
if-eqz v0, :cond_6
.line 26
new-instance v3, Lj/b/a/b0/d;
invoke-direct {v3, v0}, Lj/b/a/b0/d;-><init>(Lj/b/a/b0/e;)V
.line 27
iget-object v4, v0, Lj/b/a/b0/e;->e:Landroid/bluetooth/BluetoothManager;
iget-object v5, v0, Lj/b/a/b0/e;->d:Landroid/content/Context;
invoke-virtual {v4, v5, v3}, Landroid/bluetooth/BluetoothManager;->openGattServer(Landroid/content/Context;Landroid/bluetooth/BluetoothGattServerCallback;)Landroid/bluetooth/BluetoothGattServer;
move-result-object v3
if-eqz v3, :cond_5
.line 28
iget-object v4, v0, Lj/b/a/b0/e;->b:Landroid/bluetooth/BluetoothGattService;
invoke-virtual {v3, v4}, Landroid/bluetooth/BluetoothGattServer;->addService(Landroid/bluetooth/BluetoothGattService;)Z
.line 29
:cond_5
iput-object v3, v0, Lj/b/a/b0/e;->c:Landroid/bluetooth/BluetoothGattServer;
.line 30
:cond_6
iget-object v0, p0, Lno/simula/corona/DataCollectorService;->P:Lj/b/a/b0/a;
if-eqz v0, :cond_7
.line 31
iget-object v3, v0, Lj/b/a/b0/a;->d:Landroid/bluetooth/le/BluetoothLeAdvertiser;
if-eqz v3, :cond_7
.line 32
iget-object v4, v0, Lj/b/a/b0/a;->b:Landroid/bluetooth/le/AdvertiseSettings;
.line 33
iget-object v5, v0, Lj/b/a/b0/a;->a:Landroid/bluetooth/le/AdvertiseData;
.line 34
iget-object v0, v0, Lj/b/a/b0/a;->c:Lj/b/a/b0/b;
.line 35
invoke-virtual {v3, v4, v5, v0}, Landroid/bluetooth/le/BluetoothLeAdvertiser;->startAdvertising(Landroid/bluetooth/le/AdvertiseSettings;Landroid/bluetooth/le/AdvertiseData;Landroid/bluetooth/le/AdvertiseCallback;)V
.line 36
:cond_7
iget-object v0, p0, Lno/simula/corona/DataCollectorService;->Q:Lj/b/a/b0/i;
if-eqz v0, :cond_8
.line 37
iput-boolean v2, v0, Lj/b/a/b0/i;->b:Z
.line 38
invoke-virtual {v0}, Lj/b/a/b0/i;->a()V
.line 39
iget-object v0, v0, Lj/b/a/b0/i;->d:Lj/b/a/b0/i$a;
const/4 v3, 0x3
const-wide/32 v4, 0x88b8
invoke-virtual {v0, v3, v4, v5}, Landroid/os/Handler;->sendEmptyMessageDelayed(IJ)Z
.line 40
:cond_8
iput-boolean v2, p0, Lno/simula/corona/DataCollectorService;->O:Z
.line 41
invoke-static {}, Lk/d/a/c;->b()Lk/d/a/c;
move-result-object v0
new-instance v3, Lj/b/a/c0/b;
invoke-direct {v3, v2}, Lj/b/a/c0/b;-><init>(Z)V
invoke-virtual {v0, v3}, Lk/d/a/c;->a(Ljava/lang/Object;)V
.line 42
iget-object v0, p0, Lno/simula/corona/DataCollectorService;->x:Lj/b/a/v;
if-eqz v0, :cond_a
invoke-interface {v0}, Lj/b/a/v;->e()V
goto :goto_2
:cond_9
const-string v0, "Bluetooth adaptor is off"
new-array v2, v1, [Ljava/lang/Object;
.line 43
sget-object v3, Ll/a/a;->d:Ll/a/a$b;
invoke-virtual {v3, v0, v2}, Ll/a/a$b;->b(Ljava/lang/String;[Ljava/lang/Object;)V
:try_end_1
.catch Ljava/lang/SecurityException; {:try_start_1 .. :try_end_1} :catch_1
goto :goto_2
:catch_1
new-array v0, v1, [Ljava/lang/Object;
.line 44
sget-object v1, Ll/a/a;->d:Ll/a/a$b;
const-string v2, "Lost bluetooth permissions"
invoke-virtual {v1, v2, v0}, Ll/a/a$b;->b(Ljava/lang/String;[Ljava/lang/Object;)V
:cond_a
:goto_2
return-void
.line 45
:cond_b
new-instance v0, Lh/e;
invoke-direct {v0, v3}, Lh/e;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public final e()V
.locals 5
const/4 v0, 0x0
new-array v1, v0, [Ljava/lang/Object;
.line 1
sget-object v2, Ll/a/a;->d:Ll/a/a$b;
const-string v3, "Starting location updates"
invoke-virtual {v2, v3, v1}, Ll/a/a$b;->c(Ljava/lang/String;[Ljava/lang/Object;)V
.line 2
:try_start_0
invoke-static {p0}, Lj/b/a/d0/a;->a(Landroid/content/Context;)Z
move-result v1
if-nez v1, :cond_0
const-string v1, "Location services are off"
new-array v2, v0, [Ljava/lang/Object;
.line 3
sget-object v3, Ll/a/a;->d:Ll/a/a$b;
invoke-virtual {v3, v1, v2}, Ll/a/a$b;->b(Ljava/lang/String;[Ljava/lang/Object;)V
return-void
.line 4
:cond_0
iget-object v1, p0, Lno/simula/corona/DataCollectorService;->D:Le/c/a/a/e/a;
const/4 v2, 0x0
if-eqz v1, :cond_2
.line 5
iget-object v3, p0, Lno/simula/corona/DataCollectorService;->B:Lcom/google/android/gms/location/LocationRequest;
.line 6
iget-object v4, p0, Lno/simula/corona/DataCollectorService;->C:Le/c/a/a/e/b;
if-eqz v4, :cond_1
.line 7
invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper;
move-result-object v2
.line 8
invoke-virtual {v1, v3, v4, v2}, Le/c/a/a/e/a;->a(Lcom/google/android/gms/location/LocationRequest;Le/c/a/a/e/b;Landroid/os/Looper;)Le/c/a/a/g/h;
const/4 v1, 0x1
.line 9
iput-boolean v1, p0, Lno/simula/corona/DataCollectorService;->y:Z
.line 10
invoke-static {}, Lk/d/a/c;->b()Lk/d/a/c;
move-result-object v2
new-instance v3, Lj/b/a/c0/c;
invoke-direct {v3, v1}, Lj/b/a/c0/c;-><init>(Z)V
invoke-virtual {v2, v3}, Lk/d/a/c;->a(Ljava/lang/Object;)V
.line 11
iget-object v1, p0, Lno/simula/corona/DataCollectorService;->x:Lj/b/a/v;
if-eqz v1, :cond_3
invoke-interface {v1}, Lj/b/a/v;->d()V
goto :goto_0
:cond_1
const-string v1, "locationCallback"
.line 12
invoke-static {v1}, Lh/k/b/g;->b(Ljava/lang/String;)V
:try_end_0
.catch Ljava/lang/SecurityException; {:try_start_0 .. :try_end_0} :catch_0
throw v2
:cond_2
:try_start_1
const-string v1, "fusedLocationClient"
.line 13
invoke-static {v1}, Lh/k/b/g;->b(Ljava/lang/String;)V
:try_end_1
.catch Ljava/lang/SecurityException; {:try_start_1 .. :try_end_1} :catch_0
throw v2
:catch_0
move-exception v1
new-array v0, v0, [Ljava/lang/Object;
.line 14
sget-object v2, Ll/a/a;->d:Ll/a/a$b;
const-string v3, "Lost location permissions"
invoke-virtual {v2, v3, v0}, Ll/a/a$b;->b(Ljava/lang/String;[Ljava/lang/Object;)V
.line 15
invoke-static {v1}, Lcom/microsoft/appcenter/crashes/Crashes;->trackError(Ljava/lang/Throwable;)V
:cond_3
:goto_0
return-void
.end method
.method public final f()V
.locals 11
.line 1
iget-object v0, p0, Lno/simula/corona/DataCollectorService;->L:Lj/b/a/f;
const/4 v1, 0x1
if-eqz v0, :cond_0
invoke-virtual {v0}, Lj/b/a/f;->a()Z
move-result v0
if-ne v0, v1, :cond_0
return-void
.line 2
:cond_0
iget-object v0, p0, Lno/simula/corona/DataCollectorService;->M:Lj/b/a/h;
const/4 v2, 0x0
if-eqz v0, :cond_e
.line 3
iget-boolean v3, v0, Lj/b/a/h;->c:Z
if-nez v3, :cond_1
.line 4
invoke-virtual {v0}, Lj/b/a/h;->a()V
return-void
.line 5
:cond_1
iget-object v0, v0, Lj/b/a/h;->f:Ljava/lang/String;
const-string v3, "."
.line 6
filled-new-array {v3}, [Ljava/lang/String;
move-result-object v4
const/4 v5, 0x6
const/4 v6, 0x0
const-string v7, "1.0.2"
invoke-static {v7, v4, v6, v6, v5}, Lh/o/g;->a(Ljava/lang/CharSequence;[Ljava/lang/String;ZII)Ljava/util/List;
move-result-object v4
.line 7
invoke-interface {v4}, Ljava/util/List;->size()I
move-result v7
const/4 v8, 0x3
if-ge v7, v8, :cond_2
goto :goto_0
.line 8
:cond_2
invoke-interface {v4, v6}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v7
check-cast v7, Ljava/lang/String;
invoke-static {v7}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
move-result v7
.line 9
invoke-interface {v4, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v9
check-cast v9, Ljava/lang/String;
invoke-static {v9}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
move-result v9
const/4 v10, 0x2
.line 10
invoke-interface {v4, v10}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v4
check-cast v4, Ljava/lang/String;
invoke-static {v4}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
move-result v4
.line 11
filled-new-array {v3}, [Ljava/lang/String;
move-result-object v3
invoke-static {v0, v3, v6, v6, v5}, Lh/o/g;->a(Ljava/lang/CharSequence;[Ljava/lang/String;ZII)Ljava/util/List;
move-result-object v3
.line 12
invoke-interface {v3}, Ljava/util/List;->size()I
move-result v5
if-eq v5, v8, :cond_3
.line 13
new-instance v3, Lcom/microsoft/appcenter/analytics/EventProperties;
invoke-direct {v3}, Lcom/microsoft/appcenter/analytics/EventProperties;-><init>()V
const-string v4, "version"
invoke-virtual {v3, v4, v0}, Lcom/microsoft/appcenter/analytics/EventProperties;->set(Ljava/lang/String;Ljava/lang/String;)Lcom/microsoft/appcenter/analytics/EventProperties;
const-string v0, "Malformed version string"
.line 14
invoke-static {v0, v3}, Lcom/microsoft/appcenter/analytics/Analytics;->trackEvent(Ljava/lang/String;Lcom/microsoft/appcenter/analytics/EventProperties;)V
goto :goto_0
.line 15
:cond_3
invoke-interface {v3, v6}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/String;
invoke-static {v0}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
move-result v0
.line 16
invoke-interface {v3, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v5
check-cast v5, Ljava/lang/String;
invoke-static {v5}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
move-result v5
.line 17
invoke-interface {v3, v10}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v3
check-cast v3, Ljava/lang/String;
invoke-static {v3}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
move-result v3
if-gt v0, v7, :cond_6
if-ne v0, v7, :cond_4
if-gt v5, v9, :cond_6
:cond_4
if-ne v0, v7, :cond_5
if-ne v5, v9, :cond_5
if-le v3, v4, :cond_5
goto :goto_1
:cond_5
:goto_0
const/4 v0, 0x0
goto :goto_2
:cond_6
:goto_1
const/4 v0, 0x1
:goto_2
if-eqz v0, :cond_d
.line 18
iget-object v0, p0, Lno/simula/corona/DataCollectorService;->J:Landroid/app/Notification;
if-eqz v0, :cond_7
goto/16 :goto_4
.line 19
:cond_7
new-instance v0, Landroid/content/Intent;
const-string v3, "market://details?id=no.simula.smittestopp"
invoke-static {v3}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v4
const-string v5, "android.intent.action.VIEW"
invoke-direct {v0, v5, v4}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V
.line 20
invoke-virtual {p0}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
move-result-object v4
invoke-virtual {v4, v0, v6}, Landroid/content/pm/PackageManager;->queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List;
move-result-object v0
.line 21
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v0
:cond_8
invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
move-result v4
if-eqz v4, :cond_9
invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v4
check-cast v4, Landroid/content/pm/ResolveInfo;
.line 22
iget-object v7, v4, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
iget-object v7, v7, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
iget-object v7, v7, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
const-string v8, "com.android.vending"
invoke-static {v7, v8}, Lh/k/b/g;->a(Ljava/lang/Object;Ljava/lang/Object;)Z
move-result v7
if-eqz v7, :cond_8
.line 23
iget-object v0, v4, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
.line 24
new-instance v2, Landroid/content/ComponentName;
iget-object v4, v0, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
iget-object v4, v4, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
iget-object v0, v0, Landroid/content/pm/ActivityInfo;->name:Ljava/lang/String;
invoke-direct {v2, v4, v0}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
.line 25
new-instance v0, Landroid/content/Intent;
invoke-static {v3}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v3
invoke-direct {v0, v5, v3}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V
const/high16 v3, 0x10000000
.line 26
invoke-virtual {v0, v3}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
const/high16 v3, 0x200000
.line 27
invoke-virtual {v0, v3}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
const/high16 v3, 0x4000000
.line 28
invoke-virtual {v0, v3}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
.line 29
invoke-virtual {v0, v2}, Landroid/content/Intent;->setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;
move-object v2, v0
:cond_9
if-eqz v2, :cond_a
goto :goto_3
.line 30
:cond_a
new-instance v2, Landroid/content/Intent;
.line 31
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "https://play.google.com/store/apps/details?id="
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v3, "no.simula.smittestopp"
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v0
.line 32
invoke-direct {v2, v5, v0}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V
.line 33
:goto_3
invoke-static {p0, v6, v2, v6}, Landroid/app/PendingIntent;->getActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;
move-result-object v0
.line 34
new-instance v2, Ld/i/a/g;
invoke-direct {v2, p0}, Ld/i/a/g;-><init>(Landroid/content/Context;)V
const v3, 0x7f12006f
.line 35
invoke-virtual {p0, v3}, Landroid/app/Service;->getString(I)Ljava/lang/String;
move-result-object v3
invoke-virtual {v2, v3}, Ld/i/a/g;->b(Ljava/lang/CharSequence;)Ld/i/a/g;
const v3, 0x7f0800a8
.line 36
iget-object v4, v2, Ld/i/a/g;->O:Landroid/app/Notification;
iput v3, v4, Landroid/app/Notification;->icon:I
const v3, 0x7f120070
.line 37
invoke-virtual {p0, v3}, Landroid/app/Service;->getString(I)Ljava/lang/String;
move-result-object v3
invoke-virtual {v2, v3}, Ld/i/a/g;->a(Ljava/lang/CharSequence;)Ld/i/a/g;
.line 38
iput v1, v2, Ld/i/a/g;->l:I
.line 39
iput-object v0, v2, Ld/i/a/g;->f:Landroid/app/PendingIntent;
.line 40
invoke-virtual {v2, v1}, Ld/i/a/g;->a(Z)Ld/i/a/g;
.line 41
sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v1, 0x1a
if-lt v0, v1, :cond_b
const-string v0, "Smittestopp Reminders"
.line 42
iput-object v0, v2, Ld/i/a/g;->I:Ljava/lang/String;
.line 43
:cond_b
invoke-virtual {v2}, Ld/i/a/g;->a()Landroid/app/Notification;
move-result-object v0
iput-object v0, p0, Lno/simula/corona/DataCollectorService;->J:Landroid/app/Notification;
const-string v0, "notification"
.line 44
invoke-virtual {p0, v0}, Landroid/app/Service;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
if-eqz v0, :cond_c
check-cast v0, Landroid/app/NotificationManager;
const/16 v1, 0x10
.line 45
iget-object v2, p0, Lno/simula/corona/DataCollectorService;->J:Landroid/app/Notification;
invoke-virtual {v0, v1, v2}, Landroid/app/NotificationManager;->notify(ILandroid/app/Notification;)V
goto :goto_4
.line 46
:cond_c
new-instance v0, Lh/e;
const-string v1, "null cannot be cast to non-null type android.app.NotificationManager"
invoke-direct {v0, v1}, Lh/e;-><init>(Ljava/lang/String;)V
throw v0
.line 47
:cond_d
:goto_4
invoke-static {}, Lj/b/a/a0;->a()J
move-result-wide v0
iput-wide v0, p0, Lno/simula/corona/DataCollectorService;->E:J
.line 48
new-instance v0, Lj/b/a/f;
new-instance v1, Lno/simula/corona/DataCollectorService$c;
invoke-direct {v1, p0}, Lno/simula/corona/DataCollectorService$c;-><init>(Lno/simula/corona/DataCollectorService;)V
invoke-direct {v0, p0, v1}, Lj/b/a/f;-><init>(Landroid/content/Context;Lj/b/a/e;)V
.line 49
iput-object v0, p0, Lno/simula/corona/DataCollectorService;->L:Lj/b/a/f;
new-array v1, v6, [Ljava/lang/Object;
.line 50
invoke-virtual {v0, v1}, Landroid/os/AsyncTask;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask;
return-void
:cond_e
const-string v0, "mDevice"
.line 51
invoke-static {v0}, Lh/k/b/g;->b(Ljava/lang/String;)V
throw v2
.end method
.method public final g()V
.locals 4
.line 1
iget-boolean v0, p0, Lno/simula/corona/DataCollectorService;->O:Z
const/4 v1, 0x0
if-eqz v0, :cond_6
new-array v0, v1, [Ljava/lang/Object;
.line 2
sget-object v2, Ll/a/a;->d:Ll/a/a$b;
const-string v3, "Stopping bluetooth updates"
invoke-virtual {v2, v3, v0}, Ll/a/a$b;->c(Ljava/lang/String;[Ljava/lang/Object;)V
const-string v0, "bluetooth"
.line 3
invoke-virtual {p0, v0}, Landroid/app/Service;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
if-eqz v0, :cond_5
check-cast v0, Landroid/bluetooth/BluetoothManager;
.line 4
invoke-virtual {v0}, Landroid/bluetooth/BluetoothManager;->getAdapter()Landroid/bluetooth/BluetoothAdapter;
move-result-object v0
const/4 v2, 0x4
if-eqz v0, :cond_3
invoke-virtual {v0}, Landroid/bluetooth/BluetoothAdapter;->isEnabled()Z
move-result v0
const/4 v3, 0x1
if-ne v0, v3, :cond_3
.line 5
:try_start_0
iget-object v0, p0, Lno/simula/corona/DataCollectorService;->R:Lj/b/a/b0/e;
if-eqz v0, :cond_0
.line 6
iget-object v0, v0, Lj/b/a/b0/e;->c:Landroid/bluetooth/BluetoothGattServer;
if-eqz v0, :cond_0
invoke-virtual {v0}, Landroid/bluetooth/BluetoothGattServer;->close()V
.line 7
:cond_0
iget-object v0, p0, Lno/simula/corona/DataCollectorService;->Q:Lj/b/a/b0/i;
if-eqz v0, :cond_1
.line 8
iput-boolean v1, v0, Lj/b/a/b0/i;->b:Z
.line 9
iget-object v3, v0, Lj/b/a/b0/i;->d:Lj/b/a/b0/i$a;
invoke-virtual {v3, v2}, Landroid/os/Handler;->removeMessages(I)V
.line 10
invoke-virtual {v0}, Lj/b/a/b0/i;->b()V
.line 11
:cond_1
iget-object v0, p0, Lno/simula/corona/DataCollectorService;->P:Lj/b/a/b0/a;
if-eqz v0, :cond_2
.line 12
iget-object v2, v0, Lj/b/a/b0/a;->d:Landroid/bluetooth/le/BluetoothLeAdvertiser;
if-eqz v2, :cond_2
iget-object v0, v0, Lj/b/a/b0/a;->c:Lj/b/a/b0/b;
invoke-virtual {v2, v0}, Landroid/bluetooth/le/BluetoothLeAdvertiser;->stopAdvertising(Landroid/bluetooth/le/AdvertiseCallback;)V
.line 13
:cond_2
iput-boolean v1, p0, Lno/simula/corona/DataCollectorService;->O:Z
.line 14
invoke-static {}, Lk/d/a/c;->b()Lk/d/a/c;
move-result-object v0
new-instance v2, Lj/b/a/c0/b;
invoke-direct {v2, v1}, Lj/b/a/c0/b;-><init>(Z)V
invoke-virtual {v0, v2}, Lk/d/a/c;->a(Ljava/lang/Object;)V
:try_end_0
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
goto :goto_0
:catch_0
move-exception v0
.line 15
sget-object v1, Ll/a/a;->d:Ll/a/a$b;
invoke-virtual {v1, v0}, Ll/a/a$b;->a(Ljava/lang/Throwable;)V
.line 16
new-instance v1, Ljava/util/LinkedHashMap;
invoke-direct {v1}, Ljava/util/LinkedHashMap;-><init>()V
const-string v2, "where"
const-string v3, "DataCollector::stopBluetoothUpdates"
.line 17
invoke-virtual {v1, v2, v3}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
const/4 v2, 0x0
.line 18
invoke-static {v0, v1, v2}, Lcom/microsoft/appcenter/crashes/Crashes;->trackError(Ljava/lang/Throwable;Ljava/util/Map;Ljava/lang/Iterable;)V
goto :goto_0
.line 19
:cond_3
iget-object v0, p0, Lno/simula/corona/DataCollectorService;->Q:Lj/b/a/b0/i;
if-eqz v0, :cond_4
.line 20
iput-boolean v1, v0, Lj/b/a/b0/i;->b:Z
.line 21
iget-object v3, v0, Lj/b/a/b0/i;->d:Lj/b/a/b0/i$a;
invoke-virtual {v3, v2}, Landroid/os/Handler;->removeMessages(I)V
.line 22
invoke-virtual {v0}, Lj/b/a/b0/i;->b()V
.line 23
:cond_4
iput-boolean v1, p0, Lno/simula/corona/DataCollectorService;->O:Z
.line 24
invoke-static {}, Lk/d/a/c;->b()Lk/d/a/c;
move-result-object v0
new-instance v2, Lj/b/a/c0/b;
invoke-direct {v2, v1}, Lj/b/a/c0/b;-><init>(Z)V
invoke-virtual {v0, v2}, Lk/d/a/c;->a(Ljava/lang/Object;)V
goto :goto_0
.line 25
:cond_5
new-instance v0, Lh/e;
const-string v1, "null cannot be cast to non-null type android.bluetooth.BluetoothManager"
invoke-direct {v0, v1}, Lh/e;-><init>(Ljava/lang/String;)V
throw v0
:cond_6
new-array v0, v1, [Ljava/lang/Object;
.line 26
sget-object v1, Ll/a/a;->d:Ll/a/a$b;
const-string v2, "bluetooth is already closed"
invoke-virtual {v1, v2, v0}, Ll/a/a$b;->c(Ljava/lang/String;[Ljava/lang/Object;)V
:goto_0
return-void
.end method
.method public final h()V
.locals 4
.line 1
iget-boolean v0, p0, Lno/simula/corona/DataCollectorService;->y:Z
const/4 v1, 0x0
if-eqz v0, :cond_3
new-array v0, v1, [Ljava/lang/Object;
.line 2
sget-object v2, Ll/a/a;->d:Ll/a/a$b;
const-string v3, "Stopping location updates"
invoke-virtual {v2, v3, v0}, Ll/a/a$b;->c(Ljava/lang/String;[Ljava/lang/Object;)V
.line 3
:try_start_0
iget-object v0, p0, Lno/simula/corona/DataCollectorService;->D:Le/c/a/a/e/a;
const/4 v2, 0x0
if-eqz v0, :cond_2
iget-object v3, p0, Lno/simula/corona/DataCollectorService;->C:Le/c/a/a/e/b;
if-eqz v3, :cond_1
invoke-virtual {v0, v3}, Le/c/a/a/e/a;->a(Le/c/a/a/e/b;)Le/c/a/a/g/h;
.line 4
iput-boolean v1, p0, Lno/simula/corona/DataCollectorService;->y:Z
.line 5
iget-object v0, p0, Lno/simula/corona/DataCollectorService;->x:Lj/b/a/v;
if-eqz v0, :cond_0
invoke-interface {v0}, Lj/b/a/v;->g()V
.line 6
:cond_0
invoke-static {}, Lk/d/a/c;->b()Lk/d/a/c;
move-result-object v0
new-instance v2, Lj/b/a/c0/c;
invoke-direct {v2, v1}, Lj/b/a/c0/c;-><init>(Z)V
invoke-virtual {v0, v2}, Lk/d/a/c;->a(Ljava/lang/Object;)V
.line 7
iput-boolean v1, p0, Lno/simula/corona/DataCollectorService;->y:Z
goto :goto_0
:cond_1
const-string v0, "locationCallback"
.line 8
invoke-static {v0}, Lh/k/b/g;->b(Ljava/lang/String;)V
:try_end_0
.catch Ljava/lang/SecurityException; {:try_start_0 .. :try_end_0} :catch_0
throw v2
:cond_2
:try_start_1
const-string v0, "fusedLocationClient"
invoke-static {v0}, Lh/k/b/g;->b(Ljava/lang/String;)V
:try_end_1
.catch Ljava/lang/SecurityException; {:try_start_1 .. :try_end_1} :catch_0
throw v2
:catch_0
move-exception v0
.line 9
sget-object v1, Ll/a/a;->d:Ll/a/a$b;
invoke-virtual {v1, v0}, Ll/a/a$b;->a(Ljava/lang/Throwable;)V
.line 10
invoke-static {v0}, Lcom/microsoft/appcenter/crashes/Crashes;->trackError(Ljava/lang/Throwable;)V
goto :goto_0
:cond_3
new-array v0, v1, [Ljava/lang/Object;
.line 11
sget-object v1, Ll/a/a;->d:Ll/a/a$b;
const-string v2, "location services already closed"
invoke-virtual {v1, v2, v0}, Ll/a/a$b;->c(Ljava/lang/String;[Ljava/lang/Object;)V
:goto_0
return-void
.end method
.method public final i()Z
.locals 9
.line 1
invoke-static {p0}, Lj/b/a/a0;->j(Landroid/content/Context;)Z
move-result v0
const/4 v1, 0x0
const/4 v2, 0x1
if-nez v0, :cond_6
.line 2
invoke-static {p0}, Lj/b/a/a0;->h(Landroid/content/Context;)Z
move-result v0
if-nez v0, :cond_4
.line 3
sget-object v0, Lno/simula/corona/CoronaApp;->z:Lno/simula/corona/CoronaApp;
if-eqz v0, :cond_0
.line 4
iget-boolean v0, v0, Lno/simula/corona/CoronaApp;->x:Z
.line 5
invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v0
goto :goto_0
:cond_0
const/4 v0, 0x0
.line 6
:goto_0
invoke-static {v2}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v3
invoke-static {v0, v3}, Lh/k/b/g;->a(Ljava/lang/Object;Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_5
const-string v0, "notification"
.line 7
invoke-virtual {p0, v0}, Landroid/app/Service;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
if-eqz v0, :cond_3
check-cast v0, Landroid/app/NotificationManager;
.line 8
sget-object v3, Lno/simula/corona/CoronaApp;->z:Lno/simula/corona/CoronaApp;
if-eqz v3, :cond_2
.line 9
iget-boolean v3, v3, Lno/simula/corona/CoronaApp;->y:Z
if-nez v3, :cond_2
const/16 v3, 0xd
.line 10
new-instance v4, Landroid/content/Intent;
const-class v5, Lno/simula/corona/SplashActivity;
invoke-direct {v4, p0, v5}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V
.line 11
invoke-static {p0, v1, v4, v1}, Landroid/app/PendingIntent;->getActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;
move-result-object v4
.line 12
new-instance v5, Ld/i/a/g;
invoke-direct {v5, p0}, Ld/i/a/g;-><init>(Landroid/content/Context;)V
const v6, 0x7f120080
.line 13
invoke-virtual {p0, v6}, Landroid/app/Service;->getString(I)Ljava/lang/String;
move-result-object v6
invoke-virtual {v5, v6}, Ld/i/a/g;->b(Ljava/lang/CharSequence;)Ld/i/a/g;
.line 14
iget-object v6, v5, Ld/i/a/g;->O:Landroid/app/Notification;
const v7, 0x7f0800a8
iput v7, v6, Landroid/app/Notification;->icon:I
const v6, 0x7f1200a2
.line 15
invoke-virtual {p0, v6}, Landroid/app/Service;->getString(I)Ljava/lang/String;
move-result-object v6
invoke-virtual {v5, v6}, Ld/i/a/g;->a(Ljava/lang/CharSequence;)Ld/i/a/g;
.line 16
iput v2, v5, Ld/i/a/g;->l:I
.line 17
iput-object v4, v5, Ld/i/a/g;->f:Landroid/app/PendingIntent;
.line 18
invoke-virtual {v5, v2}, Ld/i/a/g;->a(Z)Ld/i/a/g;
.line 19
sget v4, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v6, 0x1a
if-lt v4, v6, :cond_1
const-string v4, "Smittestopp Notification Channel"
.line 20
iput-object v4, v5, Ld/i/a/g;->I:Ljava/lang/String;
.line 21
:cond_1
invoke-virtual {v5}, Ld/i/a/g;->a()Landroid/app/Notification;
move-result-object v4
const-string v5, "builder.build()"
invoke-static {v4, v5}, Lh/k/b/g;->a(Ljava/lang/Object;Ljava/lang/String;)V
.line 22
invoke-virtual {v0, v3, v4}, Landroid/app/NotificationManager;->notify(ILandroid/app/Notification;)V
.line 23
sget-object v0, Lno/simula/corona/CoronaApp;->z:Lno/simula/corona/CoronaApp;
if-eqz v0, :cond_2
.line 24
iput-boolean v2, v0, Lno/simula/corona/CoronaApp;->y:Z
.line 25
:cond_2
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->h()V
.line 26
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->g()V
.line 27
invoke-virtual {p0}, Landroid/app/Service;->stopSelf()V
goto :goto_1
.line 28
:cond_3
new-instance v0, Lh/e;
const-string v1, "null cannot be cast to non-null type android.app.NotificationManager"
invoke-direct {v0, v1}, Lh/e;-><init>(Ljava/lang/String;)V
throw v0
.line 29
:cond_4
invoke-static {p0}, Lj/b/a/a0;->f(Landroid/content/Context;)Ljava/lang/String;
move-result-object v0
.line 30
invoke-static {v0}, Lh/o/g;->b(Ljava/lang/CharSequence;)Z
move-result v3
xor-int/2addr v2, v3
if-eqz v2, :cond_5
.line 31
new-instance v2, Lj/b/a/h;
invoke-virtual {p0}, Landroid/app/Service;->getApplication()Landroid/app/Application;
move-result-object v3
const-string v4, "this.application"
invoke-static {v3, v4}, Lh/k/b/g;->a(Ljava/lang/Object;Ljava/lang/String;)V
invoke-direct {v2, v3}, Lj/b/a/h;-><init>(Landroid/app/Application;)V
new-instance v3, Lj/b/a/g;
invoke-direct {v3}, Lj/b/a/g;-><init>()V
invoke-virtual {v2, v0, v3}, Lj/b/a/h;->a(Ljava/lang/String;Lj/b/a/h$b;)V
:cond_5
:goto_1
return v1
.line 32
:cond_6
iget v0, p0, Lno/simula/corona/DataCollectorService;->F:I
mul-int/lit8 v0, v0, 0x3c
mul-int/lit8 v0, v0, 0x3c
.line 33
invoke-static {}, Lj/b/a/a0;->a()J
move-result-wide v3
.line 34
iget-wide v5, p0, Lno/simula/corona/DataCollectorService;->E:J
int-to-long v7, v0
add-long/2addr v5, v7
cmp-long v0, v3, v5
if-lez v0, :cond_7
const/4 v1, 0x1
:cond_7
return v1
.end method
.method public onBind(Landroid/content/Intent;)Landroid/os/IBinder;
.locals 0
const/4 p1, 0x1
.line 1
iput-boolean p1, p0, Lno/simula/corona/DataCollectorService;->A:Z
.line 2
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->c()V
.line 3
invoke-virtual {p0, p1}, Landroid/app/Service;->stopForeground(Z)V
.line 4
iget-object p1, p0, Lno/simula/corona/DataCollectorService;->z:Lj/b/a/d;
return-object p1
.end method
.method public onCreate()V
.locals 4
const/4 v0, 0x0
new-array v0, v0, [Ljava/lang/Object;
.line 1
sget-object v1, Ll/a/a;->d:Ll/a/a$b;
const-string v2, "onCreate"
invoke-virtual {v1, v2, v0}, Ll/a/a$b;->c(Ljava/lang/String;[Ljava/lang/Object;)V
.line 2
sget-object v0, Lno/simula/corona/MeasurementDatabase;->k:Lno/simula/corona/MeasurementDatabase$a;
invoke-virtual {v0, p0}, Lno/simula/corona/MeasurementDatabase$a;->a(Landroid/content/Context;)Lno/simula/corona/MeasurementDatabase;
move-result-object v0
iput-object v0, p0, Lno/simula/corona/DataCollectorService;->K:Lno/simula/corona/MeasurementDatabase;
.line 3
new-instance v0, Lj/b/a/h;
invoke-virtual {p0}, Landroid/app/Service;->getApplication()Landroid/app/Application;
move-result-object v1
const-string v2, "this.application"
invoke-static {v1, v2}, Lh/k/b/g;->a(Ljava/lang/Object;Ljava/lang/String;)V
invoke-direct {v0, v1}, Lj/b/a/h;-><init>(Landroid/app/Application;)V
iput-object v0, p0, Lno/simula/corona/DataCollectorService;->M:Lj/b/a/h;
if-eqz v0, :cond_2
.line 4
invoke-virtual {v0}, Lj/b/a/h;->a()V
.line 5
invoke-static {p0}, Le/c/a/a/e/c;->a(Landroid/content/Context;)Le/c/a/a/e/a;
move-result-object v0
const-string v1, "LocationServices.getFuse\u2026ationProviderClient(this)"
invoke-static {v0, v1}, Lh/k/b/g;->a(Ljava/lang/Object;Ljava/lang/String;)V
iput-object v0, p0, Lno/simula/corona/DataCollectorService;->D:Le/c/a/a/e/a;
.line 6
new-instance v0, Lno/simula/corona/DataCollectorService$b;
invoke-direct {v0, p0}, Lno/simula/corona/DataCollectorService$b;-><init>(Lno/simula/corona/DataCollectorService;)V
iput-object v0, p0, Lno/simula/corona/DataCollectorService;->C:Le/c/a/a/e/b;
.line 7
sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v1, 0x1a
if-lt v0, v1, :cond_1
.line 8
new-instance v0, Landroid/app/NotificationChannel;
const/4 v1, 0x3
const-string v2, "Smittestopp"
const-string v3, "Smittestopp Notification Channel"
invoke-direct {v0, v3, v2, v1}, Landroid/app/NotificationChannel;-><init>(Ljava/lang/String;Ljava/lang/CharSequence;I)V
.line 9
new-instance v2, Landroid/app/NotificationChannel;
const-string v3, "Smittestopp Reminders"
invoke-direct {v2, v3, v3, v1}, Landroid/app/NotificationChannel;-><init>(Ljava/lang/String;Ljava/lang/CharSequence;I)V
const-string v1, "notification"
.line 10
invoke-virtual {p0, v1}, Landroid/app/Service;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v1
if-eqz v1, :cond_0
check-cast v1, Landroid/app/NotificationManager;
.line 11
invoke-virtual {v1, v0}, Landroid/app/NotificationManager;->createNotificationChannel(Landroid/app/NotificationChannel;)V
.line 12
invoke-virtual {v1, v2}, Landroid/app/NotificationManager;->createNotificationChannel(Landroid/app/NotificationChannel;)V
goto :goto_0
.line 13
:cond_0
new-instance v0, Lh/e;
const-string v1, "null cannot be cast to non-null type android.app.NotificationManager"
invoke-direct {v0, v1}, Lh/e;-><init>(Ljava/lang/String;)V
throw v0
.line 14
:cond_1
:goto_0
new-instance v0, Lj/b/a/d0/a;
invoke-direct {v0}, Lj/b/a/d0/a;-><init>()V
iput-object v0, p0, Lno/simula/corona/DataCollectorService;->G:Lj/b/a/d0/a;
.line 15
new-instance v0, Landroid/content/IntentFilter;
const-string v1, "android.location.PROVIDERS_CHANGED"
invoke-direct {v0, v1}, Landroid/content/IntentFilter;-><init>(Ljava/lang/String;)V
.line 16
iget-object v1, p0, Lno/simula/corona/DataCollectorService;->G:Lj/b/a/d0/a;
invoke-virtual {p0, v1, v0}, Landroid/app/Service;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
.line 17
new-instance v0, Lj/b/a/b0/c;
invoke-direct {v0}, Lj/b/a/b0/c;-><init>()V
iput-object v0, p0, Lno/simula/corona/DataCollectorService;->N:Lj/b/a/b0/c;
.line 18
new-instance v0, Landroid/content/IntentFilter;
invoke-direct {v0}, Landroid/content/IntentFilter;-><init>()V
const-string v1, "android.bluetooth.adapter.action.STATE_CHANGED"
.line 19
invoke-virtual {v0, v1}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
const-string v1, "android.bluetooth.adapter.action.CONNECTION_STATE_CHANGED"
.line 20
invoke-virtual {v0, v1}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
const-string v1, "android.bluetooth.device.action.ACL_CONNECTED"
.line 21
invoke-virtual {v0, v1}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
const-string v1, "android.bluetooth.device.action.ACL_DISCONNECTED"
.line 22
invoke-virtual {v0, v1}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
.line 23
iget-object v1, p0, Lno/simula/corona/DataCollectorService;->N:Lj/b/a/b0/c;
invoke-virtual {p0, v1, v0}, Landroid/app/Service;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
.line 24
invoke-static {}, Lk/d/a/c;->b()Lk/d/a/c;
move-result-object v0
invoke-virtual {v0, p0}, Lk/d/a/c;->b(Ljava/lang/Object;)V
return-void
:cond_2
const-string v0, "mDevice"
.line 25
invoke-static {v0}, Lh/k/b/g;->b(Ljava/lang/String;)V
const/4 v0, 0x0
throw v0
.end method
.method public onDestroy()V
.locals 6
const-string v0, "where"
const/4 v1, 0x1
.line 1
invoke-virtual {p0, v1}, Landroid/app/Service;->stopForeground(Z)V
.line 2
iget-boolean v2, p0, Lno/simula/corona/DataCollectorService;->y:Z
if-eqz v2, :cond_0
.line 3
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->h()V
.line 4
:cond_0
iget-boolean v2, p0, Lno/simula/corona/DataCollectorService;->O:Z
if-eqz v2, :cond_1
.line 5
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->g()V
:cond_1
const/4 v2, 0x0
.line 6
iput-object v2, p0, Lno/simula/corona/DataCollectorService;->J:Landroid/app/Notification;
.line 7
iget-object v3, p0, Lno/simula/corona/DataCollectorService;->M:Lj/b/a/h;
if-eqz v3, :cond_7
if-eqz v3, :cond_6
.line 8
:try_start_0
iget-object v4, v3, Lj/b/a/h;->b:Lcom/microsoft/azure/sdk/iot/device/DeviceClient;
if-eqz v4, :cond_2
invoke-virtual {v4}, Lcom/microsoft/azure/sdk/iot/device/DeviceClient;->closeNow()V
.line 9
:cond_2
iput-object v2, v3, Lj/b/a/h;->b:Lcom/microsoft/azure/sdk/iot/device/DeviceClient;
const/4 v4, 0x0
.line 10
iput-boolean v4, v3, Lj/b/a/h;->c:Z
.line 11
iput-boolean v4, v3, Lj/b/a/h;->d:Z
.line 12
iput-boolean v4, v3, Lj/b/a/h;->e:Z
:try_end_0
.catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0
goto :goto_0
:catch_0
move-exception v3
.line 13
new-instance v4, Ljava/util/LinkedHashMap;
invoke-direct {v4}, Ljava/util/LinkedHashMap;-><init>()V
const-string v5, "IoTHubDevice::close"
invoke-virtual {v4, v0, v5}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 14
invoke-static {v3, v4, v2}, Lcom/microsoft/appcenter/crashes/Crashes;->trackError(Ljava/lang/Throwable;Ljava/util/Map;Ljava/lang/Iterable;)V
.line 15
sget-object v4, Ll/a/a;->d:Ll/a/a$b;
invoke-virtual {v4, v3}, Ll/a/a$b;->a(Ljava/lang/Throwable;)V
.line 16
:goto_0
iget-object v3, p0, Lno/simula/corona/DataCollectorService;->L:Lj/b/a/f;
if-eqz v3, :cond_3
invoke-virtual {v3}, Lj/b/a/f;->a()Z
move-result v3
if-ne v3, v1, :cond_3
.line 17
:try_start_1
iget-object v3, p0, Lno/simula/corona/DataCollectorService;->L:Lj/b/a/f;
if-eqz v3, :cond_3
invoke-virtual {v3, v1}, Landroid/os/AsyncTask;->cancel(Z)Z
:try_end_1
.catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_1
goto :goto_1
:catch_1
move-exception v1
.line 18
new-instance v3, Ljava/util/LinkedHashMap;
invoke-direct {v3}, Ljava/util/LinkedHashMap;-><init>()V
const-string v4, "DataCollector::onDestroy"
.line 19
invoke-interface {v3, v0, v4}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 20
invoke-static {v1, v3, v2}, Lcom/microsoft/appcenter/crashes/Crashes;->trackError(Ljava/lang/Throwable;Ljava/util/Map;Ljava/lang/Iterable;)V
.line 21
:cond_3
:goto_1
iput-object v2, p0, Lno/simula/corona/DataCollectorService;->L:Lj/b/a/f;
.line 22
iget-object v0, p0, Lno/simula/corona/DataCollectorService;->x:Lj/b/a/v;
if-eqz v0, :cond_4
invoke-interface {v0}, Lj/b/a/v;->a()V
.line 23
:cond_4
iget-object v0, p0, Lno/simula/corona/DataCollectorService;->G:Lj/b/a/d0/a;
if-eqz v0, :cond_5
.line 24
invoke-virtual {p0, v0}, Landroid/app/Service;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V
.line 25
:cond_5
iget-object v0, p0, Lno/simula/corona/DataCollectorService;->N:Lj/b/a/b0/c;
invoke-virtual {p0, v0}, Landroid/app/Service;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V
.line 26
invoke-static {}, Lk/d/a/c;->b()Lk/d/a/c;
move-result-object v0
invoke-virtual {v0, p0}, Lk/d/a/c;->c(Ljava/lang/Object;)V
.line 27
invoke-super {p0}, Landroid/app/Service;->onDestroy()V
return-void
.line 28
:cond_6
throw v2
:cond_7
const-string v0, "mDevice"
.line 29
invoke-static {v0}, Lh/k/b/g;->b(Ljava/lang/String;)V
throw v2
.end method
.method public final onEvent(Lj/b/a/c0/a;)V
.locals 4
.annotation runtime Lk/d/a/m;
threadMode = .enum Lorg/greenrobot/eventbus/ThreadMode;->MAIN:Lorg/greenrobot/eventbus/ThreadMode;
.end annotation
if-eqz p1, :cond_6
.line 1
invoke-virtual {p1}, Lj/b/a/c0/a;->toString()Ljava/lang/String;
move-result-object v0
const/4 v1, 0x0
new-array v2, v1, [Ljava/lang/Object;
.line 2
sget-object v3, Ll/a/a;->d:Ll/a/a$b;
invoke-virtual {v3, v0, v2}, Ll/a/a$b;->a(Ljava/lang/String;[Ljava/lang/Object;)V
.line 3
iget-boolean v0, p0, Lno/simula/corona/DataCollectorService;->O:Z
if-eqz v0, :cond_0
.line 4
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->g()V
.line 5
:cond_0
iget-boolean p1, p1, Lj/b/a/c0/a;->a:Z
if-eqz p1, :cond_5
.line 6
iget-object p1, p0, Lno/simula/corona/DataCollectorService;->I:Landroid/app/Notification;
if-nez p1, :cond_5
invoke-static {p0}, Lj/b/a/a0;->c(Landroid/content/Context;)Z
move-result p1
if-eqz p1, :cond_5
iget-boolean p1, p0, Lno/simula/corona/DataCollectorService;->A:Z
if-eqz p1, :cond_1
goto :goto_0
:cond_1
const p1, 0x7f120028
.line 7
iget-object v0, p0, Lno/simula/corona/DataCollectorService;->H:Landroid/app/Notification;
if-eqz v0, :cond_2
const p1, 0x7f120064
const/4 v1, 0x1
.line 8
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->c()V
.line 9
:cond_2
invoke-virtual {p0, p1}, Lno/simula/corona/DataCollectorService;->a(I)Landroid/app/Notification;
move-result-object p1
iput-object p1, p0, Lno/simula/corona/DataCollectorService;->I:Landroid/app/Notification;
if-eqz v1, :cond_3
.line 10
iput-object p1, p0, Lno/simula/corona/DataCollectorService;->H:Landroid/app/Notification;
:cond_3
const-string p1, "notification"
.line 11
invoke-virtual {p0, p1}, Landroid/app/Service;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object p1
if-eqz p1, :cond_4
check-cast p1, Landroid/app/NotificationManager;
const/16 v0, 0xf
.line 12
iget-object v1, p0, Lno/simula/corona/DataCollectorService;->I:Landroid/app/Notification;
invoke-virtual {p1, v0, v1}, Landroid/app/NotificationManager;->notify(ILandroid/app/Notification;)V
goto :goto_0
.line 13
:cond_4
new-instance p1, Lh/e;
const-string v0, "null cannot be cast to non-null type android.app.NotificationManager"
invoke-direct {p1, v0}, Lh/e;-><init>(Ljava/lang/String;)V
throw p1
:cond_5
:goto_0
return-void
:cond_6
const-string p1, "event"
.line 14
invoke-static {p1}, Lh/k/b/g;->a(Ljava/lang/String;)V
const/4 p1, 0x0
throw p1
.end method
.method public final onEvent(Lj/b/a/c0/d;)V
.locals 4
.annotation runtime Lk/d/a/m;
threadMode = .enum Lorg/greenrobot/eventbus/ThreadMode;->MAIN:Lorg/greenrobot/eventbus/ThreadMode;
.end annotation
if-eqz p1, :cond_6
.line 15
invoke-virtual {p1}, Lj/b/a/c0/d;->toString()Ljava/lang/String;
move-result-object v0
const/4 v1, 0x0
new-array v2, v1, [Ljava/lang/Object;
.line 16
sget-object v3, Ll/a/a;->d:Ll/a/a$b;
invoke-virtual {v3, v0, v2}, Ll/a/a$b;->a(Ljava/lang/String;[Ljava/lang/Object;)V
.line 17
iget-boolean v0, p0, Lno/simula/corona/DataCollectorService;->y:Z
if-eqz v0, :cond_0
.line 18
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->h()V
.line 19
:cond_0
iget-boolean p1, p1, Lj/b/a/c0/d;->a:Z
if-eqz p1, :cond_5
.line 20
iget-object p1, p0, Lno/simula/corona/DataCollectorService;->H:Landroid/app/Notification;
if-nez p1, :cond_5
invoke-static {p0}, Lj/b/a/a0;->d(Landroid/content/Context;)Z
move-result p1
if-eqz p1, :cond_5
iget-boolean p1, p0, Lno/simula/corona/DataCollectorService;->A:Z
if-eqz p1, :cond_1
goto :goto_0
:cond_1
const p1, 0x7f120065
.line 21
iget-object v0, p0, Lno/simula/corona/DataCollectorService;->I:Landroid/app/Notification;
if-eqz v0, :cond_2
const p1, 0x7f120064
const/4 v1, 0x1
.line 22
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->c()V
.line 23
:cond_2
invoke-virtual {p0, p1}, Lno/simula/corona/DataCollectorService;->a(I)Landroid/app/Notification;
move-result-object p1
iput-object p1, p0, Lno/simula/corona/DataCollectorService;->H:Landroid/app/Notification;
if-eqz v1, :cond_3
.line 24
iput-object p1, p0, Lno/simula/corona/DataCollectorService;->I:Landroid/app/Notification;
:cond_3
const-string p1, "notification"
.line 25
invoke-virtual {p0, p1}, Landroid/app/Service;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object p1
if-eqz p1, :cond_4
check-cast p1, Landroid/app/NotificationManager;
const/16 v0, 0xe
.line 26
iget-object v1, p0, Lno/simula/corona/DataCollectorService;->H:Landroid/app/Notification;
invoke-virtual {p1, v0, v1}, Landroid/app/NotificationManager;->notify(ILandroid/app/Notification;)V
goto :goto_0
.line 27
:cond_4
new-instance p1, Lh/e;
const-string v0, "null cannot be cast to non-null type android.app.NotificationManager"
invoke-direct {p1, v0}, Lh/e;-><init>(Ljava/lang/String;)V
throw p1
:cond_5
:goto_0
return-void
:cond_6
const-string p1, "event"
.line 28
invoke-static {p1}, Lh/k/b/g;->a(Ljava/lang/String;)V
const/4 p1, 0x0
throw p1
.end method
.method public onRebind(Landroid/content/Intent;)V
.locals 1
const/4 v0, 0x1
.line 1
iput-boolean v0, p0, Lno/simula/corona/DataCollectorService;->A:Z
.line 2
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->c()V
.line 3
invoke-virtual {p0, v0}, Landroid/app/Service;->stopForeground(Z)V
.line 4
invoke-super {p0, p1}, Landroid/app/Service;->onRebind(Landroid/content/Intent;)V
return-void
.end method
.method public onStartCommand(Landroid/content/Intent;II)I
.locals 3
const/4 p2, 0x0
new-array p3, p2, [Ljava/lang/Object;
.line 1
sget-object v0, Ll/a/a;->d:Ll/a/a$b;
const-string v1, "onStartCommand"
invoke-virtual {v0, v1, p3}, Ll/a/a$b;->c(Ljava/lang/String;[Ljava/lang/Object;)V
const/4 p3, 0x1
if-eqz p1, :cond_0
const-string v0, "from-service"
.line 2
invoke-virtual {p1, v0, p2}, Landroid/content/Intent;->getBooleanExtra(Ljava/lang/String;Z)Z
move-result v0
if-ne v0, p3, :cond_0
.line 3
invoke-static {p0, p2}, Lj/b/a/a0;->a(Landroid/content/Context;Z)V
.line 4
invoke-static {p0, p2}, Lj/b/a/a0;->b(Landroid/content/Context;Z)V
.line 5
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->h()V
.line 6
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->g()V
.line 7
invoke-virtual {p0}, Landroid/app/Service;->stopSelf()V
:cond_0
const/4 v0, 0x2
if-eqz p1, :cond_9
const-string v1, "service-command"
.line 8
invoke-virtual {p1, v1}, Landroid/content/Intent;->hasExtra(Ljava/lang/String;)Z
move-result v2
if-ne v2, p3, :cond_9
const/4 v2, -0x1
.line 9
invoke-virtual {p1, v1, v2}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I
move-result v1
if-eqz v1, :cond_8
if-eq v1, p3, :cond_7
if-eq v1, v0, :cond_6
const/4 p3, 0x3
if-eq v1, p3, :cond_5
const/4 p3, 0x4
if-eq v1, p3, :cond_2
const/4 p1, 0x5
if-eq v1, p1, :cond_1
goto/16 :goto_0
:cond_1
new-array p1, p2, [Ljava/lang/Object;
.line 10
sget-object p2, Ll/a/a;->d:Ll/a/a$b;
const-string p3, "stop all updates"
invoke-virtual {p2, p3, p1}, Ll/a/a$b;->c(Ljava/lang/String;[Ljava/lang/Object;)V
.line 11
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->h()V
.line 12
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->g()V
.line 13
invoke-virtual {p0}, Landroid/app/Service;->stopSelf()V
goto :goto_0
:cond_2
new-array p3, p2, [Ljava/lang/Object;
.line 14
sget-object v1, Ll/a/a;->d:Ll/a/a$b;
const-string v2, "start all updates"
invoke-virtual {v1, v2, p3}, Ll/a/a$b;->c(Ljava/lang/String;[Ljava/lang/Object;)V
.line 15
invoke-static {p0}, Lj/b/a/a0;->d(Landroid/content/Context;)Z
move-result p3
if-eqz p3, :cond_3
.line 16
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->e()V
.line 17
:cond_3
invoke-static {p0}, Lj/b/a/a0;->c(Landroid/content/Context;)Z
move-result p3
if-eqz p3, :cond_4
.line 18
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->d()V
:cond_4
const-string p3, "auto_start"
.line 19
invoke-virtual {p1, p3, p2}, Landroid/content/Intent;->getBooleanExtra(Ljava/lang/String;Z)Z
move-result p1
if-eqz p1, :cond_9
const/16 p1, 0xc
.line 20
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->a()Landroid/app/Notification;
move-result-object p2
invoke-virtual {p0, p1, p2}, Landroid/app/Service;->startForeground(ILandroid/app/Notification;)V
goto :goto_0
:cond_5
new-array p1, p2, [Ljava/lang/Object;
.line 21
sget-object p2, Ll/a/a;->d:Ll/a/a$b;
const-string p3, "stop bt updates"
invoke-virtual {p2, p3, p1}, Ll/a/a$b;->c(Ljava/lang/String;[Ljava/lang/Object;)V
.line 22
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->g()V
goto :goto_0
:cond_6
new-array p1, p2, [Ljava/lang/Object;
.line 23
sget-object p2, Ll/a/a;->d:Ll/a/a$b;
const-string p3, "start bt updates"
invoke-virtual {p2, p3, p1}, Ll/a/a$b;->c(Ljava/lang/String;[Ljava/lang/Object;)V
.line 24
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->d()V
goto :goto_0
:cond_7
new-array p1, p2, [Ljava/lang/Object;
.line 25
sget-object p2, Ll/a/a;->d:Ll/a/a$b;
const-string p3, "start location updates"
invoke-virtual {p2, p3, p1}, Ll/a/a$b;->c(Ljava/lang/String;[Ljava/lang/Object;)V
.line 26
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->e()V
goto :goto_0
:cond_8
new-array p1, p2, [Ljava/lang/Object;
.line 27
sget-object p2, Ll/a/a;->d:Ll/a/a$b;
const-string p3, "stop location updates"
invoke-virtual {p2, p3, p1}, Ll/a/a$b;->c(Ljava/lang/String;[Ljava/lang/Object;)V
.line 28
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->h()V
:cond_9
:goto_0
return v0
.end method
.method public onUnbind(Landroid/content/Intent;)Z
.locals 1
const/4 p1, 0x0
.line 1
iput-boolean p1, p0, Lno/simula/corona/DataCollectorService;->A:Z
.line 2
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->b()Z
move-result p1
if-eqz p1, :cond_0
const/16 p1, 0xc
.line 3
invoke-virtual {p0}, Lno/simula/corona/DataCollectorService;->a()Landroid/app/Notification;
move-result-object v0
invoke-virtual {p0, p1, v0}, Landroid/app/Service;->startForeground(ILandroid/app/Notification;)V
:cond_0
const/4 p1, 0x1
return p1
.end method
package dev.simula.corona;
import activities.Unit;
import activities.tests.core.Log;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ComponentName;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.ServiceConnection;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
import android.widget.Toast;
import codehaus.plexus.eventbus.EventBus;
import com.microsoft.appcenter.analytics.Analytics;
import com.microsoft.identity.common.internal.providers.microsoft.azureactivedirectory.AzureActiveDirectoryAuthorizationRequest;
import h.k.b.h;
import jackson.org.util.AtomicBoolean;
import jackson.org.util.PlaybackService$LocalBinder;
import jackson.org.util.concurrent.util.Logger;
import jackson.org.util.util.Account;
import jackson.org.util.util.Host;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import lombok.org.org.org.asm.signature.ByteVector;
import no.simula.corona.DataCollectorService;
import no.simula.corona.SplashActivity;
import no.simula.corona.ui.register.RegisterActivity;
import no.simula.smittestopp.R;
import service.message.R$id;
import v7.internal.menu.ActivityCompat;
import v7.v7.app.AppCompatActivity;
import v7.v7.app.Item;
public final class MainActivity extends AppCompatActivity implements Logger, AtomicBoolean {
public DataCollectorService TAG;
public HashMap c;
public final c mConnection = new c();
/* compiled from: java-style lambda group */
public final class a implements DialogInterface.OnClickListener {
public final /* synthetic */ int maxY;
public final /* synthetic */ Object minY;
public a(int i, Object obj) {
this.maxY = i;
this.minY = obj;
}
public final void onClick(DialogInterface dialogInterface, int i) {
int $i0 = this.maxY;
if ($i0 == 0) {
((activities.tests.asm.d) this.minY).invoke();
} else if ($i0 == 1) {
jackson.org.util.Logger.remove((MainActivity) this.minY, true);
} else {
throw new NullPointerException("Null throw statement replaced by Soot");
}
}
}
/* compiled from: com.android.tools.r8.jetbrains.kotlin-style lambda group */
public final class b extends h implements h.k.a.a<h.h> {
public final /* synthetic */ int val$annotationType;
public final /* synthetic */ Object val$members;
/* JADX INFO: super call moved to the top of the method (can break code semantics) */
public b(int i, Object obj) {
super(0);
this.val$annotationType = i;
this.val$members = obj;
}
public final Object invoke() {
int $i0 = this.val$annotationType;
if ($i0 == 0) {
jackson.org.util.Logger.remove((MainActivity) this.val$members, false);
((MainActivity) this.val$members).onCreate();
return Unit.INSTANCE;
} else if ($i0 == 1) {
Intent $r1 = new Intent("android.settings.APPLICATION_DETAILS_SETTINGS");
$r1.setData(Uri.fromParts("package", ((MainActivity) this.val$members).getPackageName(), (String) null));
((MainActivity) this.val$members).startActivity($r1);
return Unit.INSTANCE;
} else {
throw new NullPointerException("Null throw statement replaced by Soot");
}
}
}
public final class c implements ServiceConnection {
public c() {
}
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
if (iBinder != null) {
MainActivity $r4 = MainActivity.this;
DataCollectorService $r5 = ((PlaybackService$LocalBinder) iBinder).this$0;
$r4.TAG = $r5;
if ($r5 != null) {
$r5.context = $r4;
}
if (!MainActivity.this.isFinishing()) {
MainActivity.this.onUpdate();
}
}
MainActivity.onActivityResult(MainActivity.this);
}
public void onServiceDisconnected(ComponentName componentName) {
DataCollectorService $r3 = MainActivity.this.TAG;
if ($r3 != null) {
$r3.context = null;
}
MainActivity $r2 = MainActivity.this;
$r2.TAG = null;
MainActivity.onActivityResult($r2);
}
}
public final class d extends h implements h.k.a.a<Boolean> {
public static final d mList = new d();
public d() {
super(0);
}
public Object invoke() {
return false;
}
}
public final class e implements Runnable {
public final class a implements DialogInterface.OnClickListener {
public a() {
}
public final void onClick(DialogInterface dialogInterface, int i) {
MainActivity.reload(MainActivity.this);
}
}
public final class b implements DialogInterface.OnDismissListener {
public b() {
}
public final void onDismiss(DialogInterface dialogInterface) {
MainActivity.reload(MainActivity.this);
}
}
public e() {
}
public final void run() {
AlertDialog.Builder $r1 = new AlertDialog.Builder(MainActivity.this);
$r1.setTitle(R.string.app_name);
$r1.setMessage(R.string.data_deleted_request);
$r1.setPositiveButton(17039370, new a());
$r1.setOnDismissListener(new b());
$r1.create();
$r1.show();
}
}
public static final /* synthetic */ void onActivityResult(MainActivity mainActivity) {
if (mainActivity.TAG != null) {
EventBus $r2 = EventBus.getDefault();
DataCollectorService $r1 = mainActivity.TAG;
if ($r1 != null) {
$r2.post(new Account($r1.first));
EventBus $r22 = EventBus.getDefault();
DataCollectorService $r12 = mainActivity.TAG;
if ($r12 != null) {
$r22.post(new Host($r12.c));
} else {
Log.e();
throw new NullPointerException("Null throw statement replaced by Soot");
}
} else {
Log.e();
throw new NullPointerException("Null throw statement replaced by Soot");
}
}
}
public static final /* synthetic */ void reload(MainActivity mainActivity) {
if (!mainActivity.isFinishing()) {
Intent $r1 = new Intent(mainActivity, SplashActivity.class);
$r1.setFlags(268468224);
mainActivity.startActivity($r1);
mainActivity.overridePendingTransition(0, 0);
mainActivity.finish();
}
}
public void close(boolean z) {
jackson.org.util.Logger.create(this, z);
if (!onItemClick()) {
return;
}
if (z) {
DataCollectorService.invoke(this);
return;
}
Intent $r1 = new Intent(this, DataCollectorService.class);
$r1.putExtra("service-command", 3);
startService($r1);
}
public void closeKeyBoard() {
}
public void e() {
Item.a((Activity) this, (int) R.id.nav_host_fragment).a(R.id.navigation_settings, (Bundle) null, (v7.util.a) null);
}
public void e(jackson.org.util.concurrent.util.d dVar) {
}
public Boolean getName() {
DataCollectorService $r2 = this.TAG;
if ($r2 != null) {
return Boolean.valueOf($r2.c);
}
return null;
}
public void lazySet() {
}
public Boolean onClick() {
DataCollectorService $r2 = this.TAG;
if ($r2 != null) {
return Boolean.valueOf($r2.first);
}
return null;
}
/* JADX WARNING: type inference failed for: r5v0, types: [dev.simula.corona.MainActivity$b, activities.tests.asm.d] */
/* JADX WARNING: type inference failed for: r5v1, types: [dev.simula.corona.MainActivity$b, activities.tests.asm.d] */
public final void onCreate() {
if (getSharedPreferences("settings", 0).getBoolean("dont-ask-again", false)) {
if (Build.VERSION.SDK_INT < 23 || !shouldShowRequestPermissionRationale("android.permission.ACCESS_FINE_LOCATION")) {
startSearch(false, new b(1, this));
} else {
startSearch(true, new b(0, this));
}
} else if (Build.VERSION.SDK_INT >= 29) {
ActivityCompat.requestPermissions(this, new String[]{"android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_BACKGROUND_LOCATION"}, jackson.org.util.Logger.DEBUG);
} else {
ActivityCompat.requestPermissions(this, new String[]{"android.permission.ACCESS_FINE_LOCATION"}, jackson.org.util.Logger.DEBUG);
}
}
/* JADX DEBUG: Multi-variable search result rejected for TypeSearchVarInfo{r34v0, resolved type: dev.simula.corona.MainActivity$d} */
/* JADX DEBUG: Multi-variable search result rejected for TypeSearchVarInfo{r1v2, resolved type: activities.tests.asm.d} */
/* JADX WARNING: Multi-variable type inference failed */
/* Code decompiled incorrectly, please refer to instructions dump. */
public void onCreate(android.os.Bundle r53) {
/*
r52 = this;
r0 = r52
r1 = r53
super.onCreate(r1)
r5 = 2131558429(0x7f0d001d, float:1.8742174E38)
r0 = r52
r0.setContentView((int) r5)
int r6 = dev.simula.corona.R$id.toolbar
r0 = r52
java.util.HashMap r7 = r0.c
if (r7 != 0) goto L_0x0020
java.util.HashMap r7 = new java.util.HashMap
r7.<init>()
r0 = r52
r0.c = r7
L_0x0020:
r0 = r52
java.util.HashMap r7 = r0.c
java.lang.Integer r8 = java.lang.Integer.valueOf(r6)
java.lang.Object r9 = r7.get(r8)
r11 = r9
android.view.View r11 = (android.view.View) r11
r10 = r11
if (r10 != 0) goto L_0x0044
r0 = r52
android.view.View r12 = r0.findViewById(r6)
r10 = r12
r0 = r52
java.util.HashMap r7 = r0.c
java.lang.Integer r8 = java.lang.Integer.valueOf(r6)
r7.put(r8, r12)
L_0x0044:
r14 = r10
androidx.appcompat.widget.Toolbar r14 = (androidx.appcompat.widget.Toolbar) r14
r13 = r14
r0 = r52
v7.v7.app.AppCompatDelegate r15 = r0.getDelegate()
r17 = r15
v7.v7.app.AppCompatDelegateImplV7 r17 = (v7.v7.app.AppCompatDelegateImplV7) r17
r16 = r17
r0 = r16
java.lang.Object r9 = r0.this$0
boolean r0 = r9 instanceof android.app.Activity
r18 = r0
if (r18 != 0) goto L_0x0061
goto L_0x00eb
L_0x0061:
r0 = r16
r0.initWindowDecorActionBar()
r0 = r16
v7.v7.app.ActionBar r0 = r0.mActionBar
r19 = r0
boolean r0 = r0 instanceof v7.v7.app.WindowDecorActionBar
r18 = r0
if (r18 != 0) goto L_0x0236
r20 = 0
r0 = r20
r1 = r16
r1.mMenuInflater = r0
if (r19 == 0) goto L_0x0081
r0 = r19
r0.onDestroy()
L_0x0081:
if (r13 == 0) goto L_0x00cb
v7.v7.app.ToolbarActionBar r21 = new v7.v7.app.ToolbarActionBar
r0 = r16
java.lang.Object r9 = r0.this$0
boolean r0 = r9 instanceof android.app.Activity
r18 = r0
if (r18 == 0) goto L_0x009c
r23 = r9
android.app.Activity r23 = (android.app.Activity) r23
r22 = r23
r0 = r22
java.lang.CharSequence r24 = r0.getTitle()
goto L_0x00a2
L_0x009c:
r0 = r16
java.lang.CharSequence r0 = r0.title
r24 = r0
L_0x00a2:
r0 = r16
v7.v7.app.WindowCallbackWrapper r0 = r0.mOriginalWindowCallback
r25 = r0
r0 = r21
r1 = r24
r2 = r25
r0.<init>(r13, r1, r2)
r0 = r21
r1 = r16
r1.mActionBar = r0
r0 = r16
android.view.Window r0 = r0.mWindow
r26 = r0
r0 = r21
android.view.Window$Callback r0 = r0.this$0
r27 = r0
r0 = r26
r1 = r27
r0.setCallback(r1)
goto L_0x00e6
L_0x00cb:
r20 = 0
r0 = r20
r1 = r16
r1.mActionBar = r0
r0 = r16
android.view.Window r0 = r0.mWindow
r26 = r0
r0 = r16
v7.v7.app.WindowCallbackWrapper r0 = r0.mOriginalWindowCallback
r25 = r0
r0 = r26
r1 = r25
r0.setCallback(r1)
L_0x00e6:
r0 = r16
r0.invalidateOptionsMenu()
L_0x00eb:
r5 = 2131361987(0x7f0a00c3, float:1.8343742E38)
r0 = r52
android.view.View r10 = r0.findViewById(r5)
java.lang.String r28 = "findViewById(R.id.nav_view)"
r0 = r28
activities.tests.core.Log.get(r10, r0)
r30 = r10
com.google.android.material.bottomnavigation.BottomNavigationView r30 = (com.google.android.material.bottomnavigation.BottomNavigationView) r30
r29 = r30
r5 = 2131361985(0x7f0a00c1, float:1.8343738E38)
r0 = r52
androidx.navigation.NavController r31 = v7.v7.app.Item.a((android.app.Activity) r0, (int) r5)
r5 = 3
java.lang.Integer[] r0 = new java.lang.Integer[r5]
r32 = r0
r5 = 2131361991(0x7f0a00c7, float:1.834375E38)
java.lang.Integer r8 = java.lang.Integer.valueOf(r5)
r5 = 0
r32[r5] = r8
r5 = 2131361989(0x7f0a00c5, float:1.8343746E38)
java.lang.Integer r8 = java.lang.Integer.valueOf(r5)
r5 = 1
r32[r5] = r8
r5 = 2131361990(0x7f0a00c6, float:1.8343748E38)
java.lang.Integer r8 = java.lang.Integer.valueOf(r5)
r5 = 2
r32[r5] = r8
java.util.LinkedHashSet r33 = new java.util.LinkedHashSet
r5 = 3
int r6 = lombok.org.org.org.asm.signature.ByteVector.add((int) r5)
r0 = r33
r0.<init>(r6)
r6 = 0
L_0x013a:
r5 = 3
if (r6 >= r5) goto L_0x0147
r8 = r32[r6]
r0 = r33
r0.add(r8)
int r6 = r6 + 1
goto L_0x013a
L_0x0147:
dev.simula.corona.MainActivity$d r34 = dev.simula.corona.MainActivity.d.mList
java.util.HashSet r35 = new java.util.HashSet
r0 = r35
r0.<init>()
r0 = r35
r1 = r33
r0.addAll(r1)
jackson.org.util.EulaActivity$2 r36 = new jackson.org.util.EulaActivity$2
r0 = r36
r1 = r34
r0.<init>(r1)
v7.util.menu.LayoutManager r37 = new v7.util.menu.LayoutManager
r20 = 0
r38 = 0
r0 = r37
r1 = r35
r2 = r20
r3 = r36
r4 = r38
r0.<init>(r1, r2, r3, r4)
java.lang.String r28 = "AppBarConfiguration.Buil…eUpListener)\n .build()"
r0 = r37
r1 = r28
activities.tests.core.Log.get(r0, r1)
if (r31 == 0) goto L_0x0223
v7.util.menu.a r39 = new v7.util.menu.a
r0 = r39
r1 = r52
r2 = r37
r0.<init>(r1, r2)
r0 = r31
r1 = r39
r0.a((androidx.navigation.NavController.b) r1)
v7.util.menu.e r40 = new v7.util.menu.e
r0 = r40
r1 = r31
r0.<init>(r1)
r0 = r29
r1 = r40
r0.setOnNavigationItemSelectedListener(r1)
java.lang.ref.WeakReference r41 = new java.lang.ref.WeakReference
r0 = r41
r1 = r29
r0.<init>(r1)
v7.util.menu.d r42 = new v7.util.menu.d
r0 = r42
r1 = r41
r2 = r31
r0.<init>(r1, r2)
r0 = r31
r1 = r42
r0.a((androidx.navigation.NavController.b) r1)
r0 = r31
v7.util.PagerSlidingTabStrip r0 = r0.l
r43 = r0
if (r43 != 0) goto L_0x01e0
v7.util.PagerSlidingTabStrip r43 = new v7.util.PagerSlidingTabStrip
r0 = r31
android.content.Context r0 = r0.e
r44 = r0
r0 = r31
v7.util.g r0 = r0.d
r45 = r0
r0 = r43
r1 = r44
r2 = r45
r0.<init>(r1, r2)
r0 = r43
r1 = r31
r1.l = r0
L_0x01e0:
r0 = r31
v7.util.PagerSlidingTabStrip r0 = r0.l
r43 = r0
r5 = 2131755008(0x7f100000, float:1.9140883E38)
r0 = r43
v7.util.h r46 = r0.a(r5)
java.lang.String r28 = "navController.navInflate…te(R.navigation.main_nav)"
r0 = r46
r1 = r28
activities.tests.core.Log.get(r0, r1)
r5 = 2131361989(0x7f0a00c5, float:1.8343746E38)
r0 = r46
r0.b = r5
r20 = 0
r0 = r20
r1 = r46
r1.a = r0
r5 = 1
java.lang.Object[] r0 = new java.lang.Object[r5]
r47 = r0
r0 = r52
java.lang.String r48 = jackson.org.util.Logger.getName(r0)
r5 = 0
r47[r5] = r48
service.message.Log r49 = service.message.R$id.this$0
java.lang.String r28 = "My device id is: %s"
r0 = r49
r1 = r28
r2 = r47
r0.e(r1, r2)
return
L_0x0223:
java.lang.String r28 = "navController"
r0 = r28
activities.tests.core.Log.get((java.lang.String) r0)
java.lang.NullPointerException r50 = new java.lang.NullPointerException
java.lang.String r28 = "Null throw statement replaced by Soot"
r0 = r50
r1 = r28
r0.<init>(r1)
throw r50
L_0x0236:
java.lang.IllegalStateException r51 = new java.lang.IllegalStateException
java.lang.String r28 = "This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead."
r0 = r51
r1 = r28
r0.<init>(r1)
throw r51
*/
throw new UnsupportedOperationException("Method not decompiled: dev.simula.corona.MainActivity.onCreate(android.os.Bundle):void");
}
public final boolean onItemClick() {
DataCollectorService $r1;
if (this.TAG == null) {
R$id.this$0.e("Service is null, cannot toggle state", new Object[0]);
return false;
} else if (!jackson.org.util.Logger.isEnabled(this) && ($r1 = this.TAG) != null && !$r1.get()) {
Toast.makeText(this, "Cannot start location monitoring before consenting", 1).show();
return false;
} else if (!jackson.org.util.Logger.parse(this)) {
startActivity(new Intent(this, RegisterActivity.class));
return false;
} else {
DataCollectorService $r12 = this.TAG;
if ($r12 == null || $r12.get() || jackson.org.util.Logger.open(this, "android.permission.ACCESS_FINE_LOCATION")) {
return true;
}
onCreate();
return false;
}
}
public void onRequestPermissionsResult(int i, String[] strArr, int[] iArr) {
if (strArr == null) {
Log.get("permissions");
throw new NullPointerException("Null throw statement replaced by Soot");
} else if (iArr == null) {
Log.get("grantResults");
throw new NullPointerException("Null throw statement replaced by Soot");
} else if (i == jackson.org.util.Logger.DEBUG) {
LinkedHashMap $r4 = new LinkedHashMap();
int $i0 = strArr.length;
if ($i0 == 1) {
$r4.put("permissions", strArr[0]);
StringBuilder $r5 = new StringBuilder();
$r5.append(iArr[0]);
$r5.append('}');
$r4.put("granted", $r5.toString());
} else if ($i0 != 2) {
$r4.put("permissions", AzureActiveDirectoryAuthorizationRequest.Prompt.AUTO);
} else {
$r4.put("permissions", strArr[0] + ", " + strArr[1]);
$r4.put("granted", iArr[0] + ", " + iArr[1]);
}
if (!$r4.isEmpty()) {
Analytics.trackEvent("Permission Response", (Map) $r4);
}
int $i02 = ByteVector.get((Object[]) strArr, (Object) "android.permission.ACCESS_FINE_LOCATION");
if ($i02 < 0 || iArr[$i02] != 0) {
jackson.org.util.Logger.remove(this, true);
} else {
onUpdate();
}
}
}
public void onStart() {
super.onStart();
bindService(new Intent(this, DataCollectorService.class), this.mConnection, 1);
}
public void onStop() {
if (this.TAG != null) {
unbindService(this.mConnection);
}
super.onStop();
}
public final void onUpdate() {
DataCollectorService $r3;
if (jackson.org.util.Logger.load(this)) {
SharedPreferences.Editor $r2 = getSharedPreferences("settings", 0).edit();
$r2.putBoolean("firstland", false);
$r2.apply();
onCreate();
} else if (jackson.org.util.Logger.isEnabled(this) && ($r3 = this.TAG) != null && !$r3.get() && jackson.org.util.Logger.open(this, "android.permission.ACCESS_FINE_LOCATION")) {
if (jackson.org.util.Logger.update(this)) {
DataCollectorService.invoke(this);
}
if (jackson.org.util.Logger.getBoolean(this)) {
DataCollectorService.apply(this);
}
}
}
public void putShort() {
}
public void set() {
}
public final void startSearch(boolean z, activities.tests.asm.d dVar) {
R$id.this$0.d("Show rationale", new Object[0]);
new AlertDialog.Builder(this).setTitle(R.string.need_location_permission).setMessage(z ? R.string.need_location_message : R.string.need_location_message_settings).setPositiveButton(z ? R.string.ask_permission : R.string.open_settings, new a(0, dVar)).setNegativeButton(R.string.dont_ask_permission, new a(1, this)).create().show();
}
public void update(boolean z) {
jackson.org.util.Logger.write(this, z);
if (!onItemClick()) {
return;
}
if (z) {
DataCollectorService.apply(this);
return;
}
Intent $r1 = new Intent(this, DataCollectorService.class);
$r1.putExtra("service-command", 0);
startService($r1);
}
public void uploadImage() {
runOnUiThread(new e());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment