public static ArrayList<Movie> getMovies(int page_number, String appid, Activity context) { HttpURLConnection urlConnection = null; BufferedReader reader = null; SharedPreferences sharedPref = context.getPreferences(Context.MODE_PRIVATE); String sortby = sharedPref.getString( context.getString(R.string.sort_by), context.getString(R.string.most_popular_value)); if (sortby.equals(context.getString(R.string.action_favorite))) { Cursor cursor = context .getContentResolver() .query(MoviesProvider.Movies.CONTENT_URI, null, null, null, null); if (cursor != null && cursor.getCount() > 0) { ArrayList<Movie> moviesList = new ArrayList<>(); while (cursor.moveToNext()) { Movie movie = new Movie(); movie.id = cursor.getInt(cursor.getColumnIndex(MovieColumns._ID)); movie.title = cursor.getString(cursor.getColumnIndex(MovieColumns.TITLE)); movie.release_date = cursor.getString(cursor.getColumnIndex(MovieColumns.RELEASE_DATE)); movie.poster = cursor.getString(cursor.getColumnIndex(MovieColumns.POSTER)); movie.overview = cursor.getString(cursor.getColumnIndex(MovieColumns.OVERVIEW)); movie.vote_average = cursor.getDouble(cursor.getColumnIndex(MovieColumns.VOTE_AVG)); movie.popularity = cursor.getDouble(cursor.getColumnIndex(MovieColumns.POPULARITY)); Cursor trailersCursor = context .getContentResolver() .query(MoviesProvider.Trailers.fromMovie(movie.id), null, null, null, null); if (trailersCursor != null && trailersCursor.getCount() > 0) { ArrayList<Trailer> trailersList = new ArrayList<>(); while (trailersCursor.moveToNext()) { Trailer trailer = new Trailer(); trailer.id = trailersCursor.getString(trailersCursor.getColumnIndex(TrailerColumns._ID)); trailer.key = trailersCursor.getString(trailersCursor.getColumnIndex(TrailerColumns.KEY)); trailer.title = trailersCursor.getString(trailersCursor.getColumnIndex(TrailerColumns.TITLE)); trailersList.add(trailer); } movie.trailers = trailersList; trailersCursor.close(); } Cursor reviewsCursor = context .getContentResolver() .query(MoviesProvider.Reviews.fromMovie(movie.id), null, null, null, null); if (reviewsCursor != null && reviewsCursor.getCount() > 0) { ArrayList<Review> reviewsList = new ArrayList<>(); while (reviewsCursor.moveToNext()) { Review review = new Review(); review.id = reviewsCursor.getString(reviewsCursor.getColumnIndex(ReviewColumns._ID)); review.author = reviewsCursor.getString(reviewsCursor.getColumnIndex(ReviewColumns.AUTHOR)); review.content = reviewsCursor.getString(reviewsCursor.getColumnIndex(ReviewColumns.CONTENT)); review.url = reviewsCursor.getString(reviewsCursor.getColumnIndex(ReviewColumns.URL)); reviewsList.add(review); } movie.reviews = reviewsList; reviewsCursor.close(); } moviesList.add(movie); } cursor.close(); return moviesList; } return null; } try { final String MOVIES_BASE_URL = "http://api.themoviedb.org/3/discover/movie?"; final String SORTBY_PARAM = "sort_by"; final String APPID_PARAM = "api_key"; final String PAGE_PARAM = "page"; Uri buildUri = Uri.parse(MOVIES_BASE_URL) .buildUpon() .appendQueryParameter(SORTBY_PARAM, sortby) .appendQueryParameter(APPID_PARAM, appid) .appendQueryParameter(PAGE_PARAM, Integer.toString(page_number)) .build(); URL url = new URL(buildUri.toString()); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.connect(); InputStream inputStream = urlConnection.getInputStream(); StringBuffer buffer = new StringBuffer(); if (inputStream == null) { return null; } reader = new BufferedReader(new InputStreamReader(inputStream)); String line; while ((line = reader.readLine()) != null) { buffer.append(line + "\n"); } if (buffer.length() == 0) { return null; } String movieJsonStr = buffer.toString(); try { return getMoviesDataFromJson(movieJsonStr, appid); } catch (JSONException e) { Log.e("MovieAPP", e.getMessage(), e); e.printStackTrace(); } } catch (IOException e) { Log.e("MovieAPP", "Error", e); e.printStackTrace(); return null; } finally { if (urlConnection != null) { urlConnection.disconnect(); } if (reader != null) { try { reader.close(); } catch (final IOException e) { Log.e("MovieAPP", "Error", e); e.printStackTrace(); } } } return null; }