Skip to content
This repository was archived by the owner on Aug 30, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
added Android friedly init.
  • Loading branch information
marandaneto committed Oct 26, 2019
commit 652da24f9f8b1b42cf29ff63d0e9f95431d9e76f
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package io.sentry.android.core;

import android.content.Context;
import io.sentry.core.Sentry;
import io.sentry.core.util.NonNull;

/** Sentry initialization class */
public final class SentryAndroid {

private SentryAndroid() {}

/**
* Sentry initialization method if auto-init is disabled
*
* @param context Application. context
*/
public static void init(@NonNull final Context context) {
Sentry.init(options -> AndroidOptionsInitializer.init(options, context));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package io.sentry.android.core

import android.content.Context
import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager
import android.os.Bundle
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.nhaarman.mockitokotlin2.doReturn
import com.nhaarman.mockitokotlin2.mock
import com.nhaarman.mockitokotlin2.whenever
import io.sentry.core.Sentry
import java.io.File
import kotlin.test.BeforeTest
import kotlin.test.Test
import kotlin.test.assertFalse
import kotlin.test.assertTrue
import org.junit.runner.RunWith

@RunWith(AndroidJUnit4::class)
class SentryAndroidTest {
private lateinit var context: Context

@BeforeTest
fun `set up`() {
context = ApplicationProvider.getApplicationContext()
Sentry.close()
}

@Test
fun `when applicationId is defined, dsn in meta-data, SDK initializes`() {
assertFalse(Sentry.isEnabled())

val mockContext = createMockContext()
val metaData = Bundle()
mockMetaData(mockContext, metaData)

metaData.putString(ManifestMetadataReader.DSN_KEY, "https://[email protected]/123")

SentryAndroid.init(mockContext)

assertTrue(Sentry.isEnabled())
}

private fun createMockContext(): Context {
val mockContext = mock<Context> {
on { applicationContext } doReturn context
}
whenever(mockContext.cacheDir).thenReturn(File("${File.separator}cache"))
return mockContext
}

private fun mockMetaData(mockContext: Context, metaData: Bundle) {
val mockPackageManager: PackageManager = mock()
val mockApplicationInfo: ApplicationInfo = mock()

whenever(mockContext.packageName).thenReturn("io.sentry.sample.test")
whenever(mockContext.packageManager).thenReturn(mockPackageManager)
whenever(mockPackageManager.getApplicationInfo(mockContext.packageName, PackageManager.GET_META_DATA)).thenReturn(mockApplicationInfo)

mockApplicationInfo.metaData = metaData
}
}
1 change: 1 addition & 0 deletions sentry-sample/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
package="io.sentry.sample">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:name=".MyApplication"
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
Expand Down
17 changes: 17 additions & 0 deletions sentry-sample/src/main/java/io/sentry/sample/MyApplication.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package io.sentry.sample;

import android.app.Application;

// import io.sentry.android.core.SentryAndroid;

/** Apps. main Application. */
public class MyApplication extends Application {

@Override
public void onCreate() {
super.onCreate();

// how to init. Sentry manually
// SentryAndroid.init(this);
}
}