summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/build.gradle6
-rw-r--r--app/src/androidTest/java/de/test/antennapod/util/FilenameGeneratorTest.java10
-rw-r--r--app/src/main/AndroidManifest.xml1
-rw-r--r--app/src/main/java/de/danoeh/antennapod/PodcastApp.java3
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/itunes/ItunesAdapter.java13
-rw-r--r--app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java2
-rw-r--r--app/src/play/java/de/danoeh/antennapod/dialog/CustomMRControllerDialog.java5
-rw-r--r--app/src/play/res/layout/media_router_controller.xml4
8 files changed, 31 insertions, 13 deletions
diff --git a/app/build.gradle b/app/build.gradle
index c7b95421b..09763fdbb 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -30,6 +30,7 @@ android {
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
+ multiDexEnabled true
versionCode getMyVersionCode()
versionName "${getMyVersionName()}"
testApplicationId "de.test.antennapod"
@@ -130,6 +131,7 @@ dependencies {
} else {
System.out.println("app: free build hack, skipping some dependencies")
}
+ compile 'com.android.support:multidex:1.0.1'
compile "com.android.support:support-v4:$supportVersion"
compile "com.android.support:appcompat-v7:$supportVersion"
compile "com.android.support:design:$supportVersion"
@@ -153,7 +155,7 @@ dependencies {
compile "com.artemzin.rxjava:proguard-rules:$rxJavaRulesVersion"
compile "com.joanzapata.iconify:android-iconify-fontawesome:$iconifyVersion"
compile "com.joanzapata.iconify:android-iconify-material:$iconifyVersion"
- compile("com.github.afollestad.material-dialogs:commons:$materialDialogsVersion") {
+ compile("com.afollestad.material-dialogs:commons:$materialDialogsVersion") {
transitive = true
}
compile "com.yqritc:recyclerview-flexibledivider:$recyclerviewFlexibledividerVersion"
@@ -179,7 +181,7 @@ task filterAbout {
inputs.files files(["src/main/templates/about.html",
"src/main/AndroidManifest.xml"])
outputs.file "src/main/assets/about.html"
-} << {
+} doLast {
copy {
from "src/main/templates/about.html"
into "src/main/assets"
diff --git a/app/src/androidTest/java/de/test/antennapod/util/FilenameGeneratorTest.java b/app/src/androidTest/java/de/test/antennapod/util/FilenameGeneratorTest.java
index 6d24fa526..13e8b9582 100644
--- a/app/src/androidTest/java/de/test/antennapod/util/FilenameGeneratorTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/util/FilenameGeneratorTest.java
@@ -34,6 +34,16 @@ public class FilenameGeneratorTest extends AndroidTestCase {
createFiles(result);
}
+ public void testFeedTitleContainsApostrophe() {
+ String result = FileNameGenerator.generateFileName("Feed's Title ...");
+ assertEquals("Feeds Title", result);
+ }
+
+ public void testFeedTitleContainsDash() {
+ String result = FileNameGenerator.generateFileName("Left - Right");
+ assertEquals("Left Right", result);
+ }
+
/**
* Tests if files can be created.
*
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 613f70fd4..10917f613 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.danoeh.antennapod"
+ android:installLocation="auto"
android:versionCode="1060398"
android:versionName="1.6.3.0">
<!--
diff --git a/app/src/main/java/de/danoeh/antennapod/PodcastApp.java b/app/src/main/java/de/danoeh/antennapod/PodcastApp.java
index f6a8db5fb..caa82d725 100644
--- a/app/src/main/java/de/danoeh/antennapod/PodcastApp.java
+++ b/app/src/main/java/de/danoeh/antennapod/PodcastApp.java
@@ -3,6 +3,7 @@ package de.danoeh.antennapod;
import android.app.Application;
import android.os.Build;
import android.os.StrictMode;
+import android.support.multidex.MultiDexApplication;
import com.joanzapata.iconify.Iconify;
import com.joanzapata.iconify.fonts.FontAwesomeModule;
@@ -13,7 +14,7 @@ import de.danoeh.antennapod.core.feed.EventDistributor;
import de.danoeh.antennapod.spa.SPAUtil;
/** Main application class. */
-public class PodcastApp extends Application {
+public class PodcastApp extends MultiDexApplication {
// make sure that ClientConfigurator executes its static code
static {
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/itunes/ItunesAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/itunes/ItunesAdapter.java
index e381b4651..f1f8be559 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/itunes/ItunesAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/itunes/ItunesAdapter.java
@@ -2,6 +2,7 @@ package de.danoeh.antennapod.adapter.itunes;
import android.content.Context;
import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
@@ -69,7 +70,7 @@ public class ItunesAdapter extends ArrayAdapter<ItunesAdapter.Podcast> {
//Set the title
viewHolder.titleView.setText(podcast.title);
- if(!podcast.feedUrl.contains("itunes.apple.com")) {
+ if(podcast.feedUrl != null && !podcast.feedUrl.contains("itunes.apple.com")) {
viewHolder.urlView.setText(podcast.feedUrl);
viewHolder.urlView.setVisibility(View.VISIBLE);
} else {
@@ -102,14 +103,16 @@ public class ItunesAdapter extends ArrayAdapter<ItunesAdapter.Podcast> {
/**
* URL of the podcast image
*/
+ @Nullable
public final String imageUrl;
/**
* URL of the podcast feed
*/
+ @Nullable
public final String feedUrl;
- private Podcast(String title, String imageUrl, String feedUrl) {
+ private Podcast(String title, @Nullable String imageUrl, @Nullable String feedUrl) {
this.title = title;
this.imageUrl = imageUrl;
this.feedUrl = feedUrl;
@@ -122,9 +125,9 @@ public class ItunesAdapter extends ArrayAdapter<ItunesAdapter.Podcast> {
* @throws JSONException
*/
public static Podcast fromSearch(JSONObject json) throws JSONException {
- String title = json.getString("collectionName");
- String imageUrl = json.getString("artworkUrl100");
- String feedUrl = json.getString("feedUrl");
+ String title = json.optString("collectionName", "");
+ String imageUrl = json.optString("artworkUrl100", null);
+ String feedUrl = json.optString("feedUrl", null);
return new Podcast(title, imageUrl, feedUrl);
}
diff --git a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java
index 7777af450..2ca7dd029 100644
--- a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java
+++ b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java
@@ -759,7 +759,7 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
clearAutodownloadSelectedNetworsPreference();
}
// get configured networks
- WifiManager wifiservice = (WifiManager) activity.getSystemService(Context.WIFI_SERVICE);
+ WifiManager wifiservice = (WifiManager) activity.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
List<WifiConfiguration> networks = wifiservice.getConfiguredNetworks();
if (networks != null) {
diff --git a/app/src/play/java/de/danoeh/antennapod/dialog/CustomMRControllerDialog.java b/app/src/play/java/de/danoeh/antennapod/dialog/CustomMRControllerDialog.java
index 93ec4e3f0..7b07d3f84 100644
--- a/app/src/play/java/de/danoeh/antennapod/dialog/CustomMRControllerDialog.java
+++ b/app/src/play/java/de/danoeh/antennapod/dialog/CustomMRControllerDialog.java
@@ -354,14 +354,15 @@ public class CustomMRControllerDialog extends MediaRouteControllerDialog {
boolean showTitle = false;
boolean showSubtitle = false;
- if (route.getPresentationDisplayId() != MediaRouter.RouteInfo.PRESENTATION_DISPLAY_ID_NONE) {
+ if (route.getPresentationDisplay() != null &&
+ route.getPresentationDisplay().getDisplayId() != MediaRouter.RouteInfo.PRESENTATION_DISPLAY_ID_NONE) {
// The user is currently casting screen.
titleView.setText(android.support.v7.mediarouter.R.string.mr_controller_casting_screen);
showTitle = true;
} else if (state == null || state.getState() == PlaybackStateCompat.STATE_NONE) {
// Show "No media selected" as we don't yet know the playback state.
// (Only exception is bluetooth where we don't show anything.)
- if (!route.isDeviceTypeBluetooth()) {
+ if (!route.isBluetooth()) {
titleView.setText(android.support.v7.mediarouter.R.string.mr_controller_no_media_selected);
showTitle = true;
}
diff --git a/app/src/play/res/layout/media_router_controller.xml b/app/src/play/res/layout/media_router_controller.xml
index 659ac0a78..9489173a3 100644
--- a/app/src/play/res/layout/media_router_controller.xml
+++ b/app/src/play/res/layout/media_router_controller.xml
@@ -31,11 +31,11 @@
<TextView android:id="@+id/mrc_control_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:textAppearance="?attr/mediaRouteControllerPrimaryTextStyle"/>
+ android:textAppearance="@style/TextAppearance.MediaRouter.PrimaryText"/>
<TextView android:id="@+id/mrc_control_subtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:textAppearance="?attr/mediaRouteControllerSecondaryTextStyle"
+ android:textAppearance="@style/TextAppearance.MediaRouter.SecondaryText"
android:singleLine="true" />
</LinearLayout>
</RelativeLayout>