Experts,
for security reasons we decided not to use the google-services.json and set the FirebaseApp DEFAULT parameters manually. I'm following the blog post here. We're using firebase sdk versions 10.2.6.
Although I'm able to successfully set the FirebaseApp DEFAULT parameters, I still get an error message: Missing google_app_id. Firebase Analytics disabled.
As you can see from the code below, I'm checking the API key after I set it so it seems that part is correct.
Any ideas greatly appreciated!
In my AndroidManifest.xml:
<provider
android:name="com.google.firebase.provider.FirebaseInitProvider"
android:authorities="${applicationId}.firebaseinitprovider"
tools:node="remove"
/>
<provider
android:name="com.company.myapp.CustomFirebaseInitProvider"
android:authorities="${applicationId}.firebaseinitprovider"
/>
My Custom Content Provider:
public class CustomFirebaseInitProvider extends ContentProvider{
public CustomFirebaseInitProvider() {
}
public void attachInfo(Context var1, ProviderInfo var2) {
super.attachInfo(var1, var2);
}
public boolean onCreate() {
// Set custom options
FirebaseOptions.Builder builder = new FirebaseOptions.Builder()
.setApiKey("valid_key")
.setApplicationId("valid_app_id")
.setGcmSenderId("valid_sender_id")
.setDatabaseUrl("valid_db_url")
.setStorageBucket("valid_storage_bucket");
if(FirebaseApp.initializeApp(this.getContext(), builder.build()) == null) {
Log.i("FirebaseInitProvider", "FirebaseApp initialization unsuccessful");
} else {
Log.i("FirebaseInitProvider", "FirebaseApp initialization successful");
}
List<FirebaseApp> appList = FirebaseApp.getApps(this.getContext());
for (int i=0; i< appList.size(); i++)
{
FirebaseApp app = appList.get(i);
String apiKey = app.getOptions().getApiKey();
Log.d("TAG",apiKey);
}
return false;
}
@Nullable
public Cursor query(Uri var1, String[] var2, String var3, String[] var4, String var5) {
return null;
}
@Nullable
public String getType(Uri var1) {
return null;
}
@Nullable
public Uri insert(Uri var1, ContentValues var2) {
return null;
}
public int delete(Uri var1, String var2, String[] var3) {
return 0;
}
public int update(Uri var1, ContentValues var2, String var3, String[] var4) {
return 0;
}
}