package com.novoda.downloadmanager.lib; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.os.Bundle; import android.support.annotation.NonNull; import com.novoda.downloadmanager.lib.logger.LLog; class DatabaseFilenameProvider { private static final String DATABASE_FILENAME = "com.novoda.downloadmanager.DatabaseFilename"; private final PackageManager packageManager; private final String packageName; private final String defaultFilename; DatabaseFilenameProvider(@NonNull PackageManager packageManager, @NonNull String packageName, @NonNull String defaultFilename) { this.packageManager = packageManager; this.packageName = packageName; this.defaultFilename = defaultFilename; } public String getDatabaseFilename() { try { ApplicationInfo applicationInfo = packageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA); return getDatabaseFilename(applicationInfo.metaData); } catch (PackageManager.NameNotFoundException e) { LLog.e("Application info not found for: " + packageName + " " + e.getMessage()); return defaultFilename; } } private String getDatabaseFilename(Bundle bundle) { if (bundle == null) { return defaultFilename; } return bundle.getString(DATABASE_FILENAME, defaultFilename); } }