Skip to content

Commit 24155ed

Browse files
Guard AndroidStudioFragment ads by consent
1 parent 484a32a commit 24155ed

File tree

3 files changed

+39
-17
lines changed

3 files changed

+39
-17
lines changed

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/about/AboutFragment.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.d4rk.androidtutorials.java.databinding.FragmentAboutBinding;
2020
import com.google.android.gms.ads.AdRequest;
2121
import com.google.android.gms.ads.MobileAds;
22+
import com.d4rk.androidtutorials.java.utils.ConsentUtils;
2223

2324
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
2425

@@ -41,8 +42,13 @@ public android.view.View onCreateView(@NonNull android.view.LayoutInflater infla
4142

4243
new FastScrollerBuilder(binding.scrollView).useMd2Style().build();
4344

44-
MobileAds.initialize(requireContext());
45-
binding.adView.loadAd(new AdRequest.Builder().build());
45+
if (ConsentUtils.canShowAds(requireContext())) {
46+
MobileAds.initialize(requireContext());
47+
binding.adView.setVisibility(android.view.View.VISIBLE);
48+
binding.adView.loadAd(new AdRequest.Builder().build());
49+
} else {
50+
binding.adView.setVisibility(android.view.View.GONE);
51+
}
4652

4753
String version = aboutViewModel.getVersionString();
4854
binding.textViewAppVersion.setText(version);

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/AndroidStudioFragment.java

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import com.google.android.material.card.MaterialCardView;
3737
import com.google.android.material.shape.CornerFamily;
3838
import com.google.android.material.shape.ShapeAppearanceModel;
39+
import com.d4rk.androidtutorials.java.utils.ConsentUtils;
3940

4041
import org.xmlpull.v1.XmlPullParser;
4142
import org.xmlpull.v1.XmlPullParserException;
@@ -54,6 +55,7 @@ public class AndroidStudioFragment extends Fragment {
5455
private static boolean mobileAdsInitialized = false;
5556
private final List<Object> allItems = new ArrayList<>();
5657
private LessonsAdapter adapter;
58+
private boolean showAds;
5759

5860
@Nullable
5961
@Override
@@ -65,15 +67,20 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c
6567
@Override
6668
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
6769
super.onViewCreated(view, savedInstanceState);
68-
ensureMobileAdsInitialized();
70+
showAds = ConsentUtils.canShowAds(requireContext());
71+
if (showAds) {
72+
ensureMobileAdsInitialized();
73+
}
6974
RecyclerView list = view.findViewById(R.id.lessons_list);
7075
list.setLayoutManager(new LinearLayoutManager(requireContext()));
7176
adapter = new LessonsAdapter();
7277
list.setAdapter(adapter);
73-
list.addItemDecoration(new LessonAdSpacingDecoration(requireContext()));
78+
if (showAds) {
79+
list.addItemDecoration(new LessonAdSpacingDecoration(requireContext()));
80+
}
7481
allItems.clear();
7582
allItems.addAll(loadItems());
76-
populateAdapter(allItems);
83+
populateAdapter(allItems, showAds);
7784

7885
MenuHost menuHost = requireActivity();
7986
menuHost.addMenuProvider(new MenuProvider() {
@@ -87,14 +94,14 @@ public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater menuInflater)
8794
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
8895
@Override
8996
public boolean onQueryTextSubmit(String query) {
90-
filterLessons(query);
91-
return true;
97+
filterLessons(query);
98+
return true;
9299
}
93100

94101
@Override
95102
public boolean onQueryTextChange(String newText) {
96-
filterLessons(newText);
97-
return true;
103+
filterLessons(newText);
104+
return true;
98105
}
99106
});
100107
}
@@ -174,7 +181,7 @@ private List<Object> loadItems() {
174181
return items;
175182
}
176183

177-
private void populateAdapter(List<Object> source) {
184+
private void populateAdapter(List<Object> source, boolean showAds) {
178185
List<Object> items = new ArrayList<>();
179186
List<Integer> eligible = new ArrayList<>();
180187
int lessonCount = 0;
@@ -190,7 +197,7 @@ private void populateAdapter(List<Object> source) {
190197
firstInCategory = false;
191198
}
192199
}
193-
int adCount = lessonCount / 3;
200+
int adCount = showAds ? lessonCount / 3 : 0;
194201
Collections.shuffle(eligible, new Random());
195202
if (adCount > eligible.size()) {
196203
adCount = eligible.size();
@@ -214,7 +221,7 @@ private void populateAdapter(List<Object> source) {
214221
private void filterLessons(String query) {
215222
String lower = query == null ? "" : query.toLowerCase();
216223
if (lower.isEmpty()) {
217-
populateAdapter(allItems);
224+
populateAdapter(allItems, showAds);
218225
return;
219226
}
220227
List<Object> filtered = new ArrayList<>();
@@ -234,7 +241,7 @@ private void filterLessons(String query) {
234241
}
235242
}
236243
}
237-
populateAdapter(filtered);
244+
populateAdapter(filtered, showAds);
238245
}
239246

240247
private static class AdItem {}

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/home/HomeFragment.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import com.d4rk.androidtutorials.java.databinding.FragmentHomeBinding;
1414
import com.google.android.gms.ads.AdRequest;
1515
import com.google.android.gms.ads.MobileAds;
16+
import com.d4rk.androidtutorials.java.utils.ConsentUtils;
1617

1718
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
1819

@@ -29,14 +30,14 @@ public class HomeFragment extends Fragment {
2930
@Override
3031
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
3132
binding = FragmentHomeBinding.inflate(inflater, container, false);
32-
initializeAds();
3333
return binding.getRoot();
3434
}
3535

3636
@Override
3737
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
3838
super.onViewCreated(view, savedInstanceState);
3939
homeViewModel = new ViewModelProvider(this).get(HomeViewModel.class);
40+
initializeAds();
4041
homeViewModel.setAnnouncements(
4142
getString(com.d4rk.androidtutorials.java.R.string.announcement_title),
4243
getString(com.d4rk.androidtutorials.java.R.string.announcement_subtitle)
@@ -84,9 +85,17 @@ public void onDestroyView() {
8485
}
8586

8687
private void initializeAds() {
87-
MobileAds.initialize(requireContext());
88-
binding.smallBannerAd.loadAd(new AdRequest.Builder().build());
89-
binding.largeBannerAd.loadAd(new AdRequest.Builder().build());
88+
if (ConsentUtils.canShowAds(requireContext())) {
89+
MobileAds.initialize(requireContext());
90+
binding.smallBannerAd.setVisibility(View.VISIBLE);
91+
binding.largeBannerAd.setVisibility(View.VISIBLE);
92+
AdRequest request = new AdRequest.Builder().build();
93+
binding.smallBannerAd.loadAd(request);
94+
binding.largeBannerAd.loadAd(request);
95+
} else {
96+
binding.smallBannerAd.setVisibility(View.GONE);
97+
binding.largeBannerAd.setVisibility(View.GONE);
98+
}
9099
}
91100

92101
private void shareTip(String tip) {

0 commit comments

Comments
 (0)