0

I am having an issue with target targetSdkVersion.I want to move from 27 to 29 but when change to sdk 29 the app runs but does not display videos.But it displays the videos when it is sdk 27 or less. Please can someone help me fix this.

/**

* A simple {@link Fragment} subclass. */ public class ChannelFragment extends Fragment { private static String GOOGLE_YOUTUBE_API_KEY = "AIzaSyBJQYpQRTzM5wuuhMUxmP7rvP3lbMGtUZ8";//here you should use your api key for testing purpose you can use this api also private static String CHANNEL_ID = "UCB_ZwuWCAuB7y0B93qvnkWw"; //here you should use your channel id for testing purpose you can use this api also private static String CHANNLE_GET_URL = "https://www.googleapis.com/youtube/v3/search?part=snippet&order=date&channelId=" + CHANNEL_ID + "&maxResults=50&key=" + GOOGLE_YOUTUBE_API_KEY + "";

private RecyclerView mList_videos = null;
private VideoPostAdapter adapter = null;
private ArrayList<YoutubeDataModel> mListData = new ArrayList<>();

public ChannelFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_channel, container, false);
    mList_videos = (RecyclerView) view.findViewById(R.id.mList_videos);
    initList(mListData);
    new RequestYoutubeAPI().execute();
    return view;
}

private void initList(ArrayList<YoutubeDataModel> mListData) {
    mList_videos.setLayoutManager(new LinearLayoutManager(getActivity()));
    adapter = new VideoPostAdapter(getActivity(), mListData, new OnItemClickListener() {
        @Override
        public void onItemClick(YoutubeDataModel item) {
            YoutubeDataModel youtubeDataModel = item;
            Intent intent = new Intent(getActivity(), DetailsActivity.class);
            intent.putExtra(YoutubeDataModel.class.toString(), youtubeDataModel);
            startActivity(intent);
        }
    });
    mList_videos.setAdapter(adapter);

}


//create an asynctask to get all the data from youtube
private class RequestYoutubeAPI extends AsyncTask<Void, String, String> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();


    }


    @Override
    protected String doInBackground(Void... params) {
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet(CHANNLE_GET_URL);
        Log.e("URL", CHANNLE_GET_URL);
        try {
            HttpResponse response = httpClient.execute(httpGet);
            HttpEntity httpEntity = response.getEntity();
            String json = EntityUtils.toString(httpEntity);
            return json;
        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;
    }


    @Override
    protected void onPostExecute(String response) {
        super.onPostExecute(response);
        if (response != null) {
            try {
                JSONObject jsonObject = new JSONObject(response);
                Log.e("response", jsonObject.toString());
                mListData = parseVideoListFromResponse(jsonObject);
                initList(mListData);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }
}

public ArrayList<YoutubeDataModel> parseVideoListFromResponse(JSONObject jsonObject) {
    ArrayList<YoutubeDataModel> mList = new ArrayList<>();

    if (jsonObject.has("items")) {
        try {
            JSONArray jsonArray = jsonObject.getJSONArray("items");
            for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject json = jsonArray.getJSONObject(i);
                if (json.has("id")) {
                    JSONObject jsonID = json.getJSONObject("id");
                    String video_id = "";
                    if (jsonID.has("videoId")) {
                        video_id = jsonID.getString("videoId");
                    }
                    if (jsonID.has("kind")) {
                        if (jsonID.getString("kind").equals("youtube#video")) {
                            YoutubeDataModel youtubeObject = new YoutubeDataModel();
                            JSONObject jsonSnippet = json.getJSONObject("snippet");
                            String title = jsonSnippet.getString("title");
                            String description = jsonSnippet.getString("description");
                            String publishedAt = jsonSnippet.getString("publishedAt");
                            String thumbnail = jsonSnippet.getJSONObject("thumbnails").getJSONObject("high").getString("url");

                            youtubeObject.setTitle(title);
                            youtubeObject.setDescription(description);
                            youtubeObject.setPublishedAt(publishedAt);
                            youtubeObject.setThumbnail(thumbnail);
                            youtubeObject.setVideo_id(video_id);
                            mList.add(youtubeObject);

                        }
                    }
                }

            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

    return mList;

}

}

Mawuli
  • 41
  • 4
  • please post here what code did you try so far. – Kiran Maniya Dec 15 '19 at 07:10
  • Thank you Kiran Maniya.I have designed a live streaming app for my company but the channel videos does not display if the targetsdkversion higher than 27 but displays when it is 27 and lower.I post the code for you to see.Thank you in advance – Mawuli Dec 15 '19 at 08:38
  • Thank you in advance.Please i cannot post questions now.it seems i do not know how to use this place well now.Can you give me your email or help me to send you the entire code for you to check it for me ?.thank you – Mawuli Dec 15 '19 at 08:49
  • I think there is possibility for me post the code but having problem to format it on the site.I can send the entire file to anyone who can help me fix it.Thank you – Mawuli Dec 15 '19 at 08:56

0 Answers0