88import android .view .Menu ;
99import android .view .MenuItem ;
1010import android .view .View ;
11- import android .view .ViewGroup ;
12- import android .widget .FrameLayout ;
13-
14- import androidx .annotation .Nullable ;
1511import androidx .annotation .NonNull ;
1612import androidx .annotation .StringRes ;
1713import androidx .appcompat .app .AlertDialog ;
1814import androidx .appcompat .widget .LinearLayoutCompat ;
1915import androidx .core .view .ViewCompat ;
20- import androidx .lifecycle .ViewModelProvider ;
21- import androidx .preference .Preference ;
22- import androidx .preference .PreferenceFragmentCompat ;
23- import androidx .recyclerview .widget .RecyclerView ;
2416
2517import com .d4rk .androidtutorials .java .BuildConfig ;
2618import com .d4rk .androidtutorials .java .R ;
2921import com .d4rk .androidtutorials .java .databinding .DialogVersionInfoBinding ;
3022import com .d4rk .androidtutorials .java .databinding .ItemHelpFaqBinding ;
3123import com .d4rk .androidtutorials .java .ui .components .navigation .BaseActivity ;
32- import com .d4rk .androidtutorials .java .ui .screens .help .repository .HelpRepository ;
3324import com .d4rk .androidtutorials .java .utils .OpenSourceLicensesUtils ;
3425import com .google .android .material .snackbar .Snackbar ;
35- import com .google .android .play .core .review .ReviewInfo ;
3626
3727import dagger .hilt .android .AndroidEntryPoint ;
3828import me .zhanghai .android .fastscroll .FastScrollerBuilder ;
4333@ AndroidEntryPoint
4434public class HelpActivity extends BaseActivity {
4535
46- private HelpViewModel helpViewModel ;
36+ private ActivityHelpBinding binding ;
4737 private static final List <FaqItem > FAQ_ITEMS = Arrays .asList (
4838 new FaqItem (R .string .question_1 , R .string .summary_preference_faq_1 ),
4939 new FaqItem (R .string .question_2 , R .string .summary_preference_faq_2 ),
@@ -59,22 +49,14 @@ public class HelpActivity extends BaseActivity {
5949 @ Override
6050 protected void onCreate (Bundle savedInstanceState ) {
6151 super .onCreate (savedInstanceState );
62- ActivityHelpBinding binding = ActivityHelpBinding .inflate (getLayoutInflater ());
52+ binding = ActivityHelpBinding .inflate (getLayoutInflater ());
6353 setContentView (binding .getRoot ());
6454 AdUtils .loadBanner (binding .faqNativeAd );
65- helpViewModel = new ViewModelProvider (this ).get (HelpViewModel .class );
6655 new FastScrollerBuilder (binding .scrollView )
6756 .useMd2Style ()
6857 .build ();
6958 bindFaqItems (binding );
70-
71- getSupportFragmentManager ().beginTransaction ()
72- .replace (R .id .frame_layout_feedback , new FeedbackFragment ())
73- .commit ();
74- }
75-
76- public HelpViewModel getHelpViewModel () {
77- return helpViewModel ;
59+ setupContactSupportCard ();
7860 }
7961
8062 @ Override
@@ -141,70 +123,23 @@ private void openLink(String url) {
141123 startActivity (browserIntent );
142124 }
143125
144- public static class FeedbackFragment extends PreferenceFragmentCompat {
145-
146- @ Override
147- public void onCreatePreferences (Bundle savedInstanceState , String rootKey ) {
148- setPreferencesFromResource (R .xml .preferences_feedback , rootKey );
149-
150- Preference feedbackPreference = findPreference (getString (R .string .key_feedback ));
151- if (feedbackPreference != null ) {
152- feedbackPreference .setOnPreferenceClickListener (preference -> {
153- if (requireActivity () instanceof HelpActivity helpActivity ) {
154- HelpViewModel vm = helpActivity .getHelpViewModel ();
155-
156- vm .requestReviewFlow (new HelpRepository .OnReviewInfoListener () {
157- @ Override
158- public void onSuccess (ReviewInfo info ) {
159- vm .launchReviewFlow (helpActivity , info );
160- }
161-
162- @ Override
163- public void onFailure (Exception e ) {
164- launchGooglePlayReviews ();
165- }
166- });
167- }
168- return true ;
169- });
170- }
171- }
172-
173- @ Override
174- public void onViewCreated (@ NonNull View view , @ Nullable Bundle savedInstanceState ) {
175- super .onViewCreated (view , savedInstanceState );
176- RecyclerView listView = getListView ();
177- listView .setNestedScrollingEnabled (false );
178- listView .setOverScrollMode (View .OVER_SCROLL_NEVER );
179- listView .setClipToPadding (false );
126+ private void setupContactSupportCard () {
127+ binding .contactSupportCard .setOnClickListener (v -> openSupportEmail ());
128+ }
180129
181- ViewGroup .LayoutParams layoutParams = listView .getLayoutParams ();
182- FrameLayout .LayoutParams frameLayoutParams ;
183- if (layoutParams instanceof FrameLayout .LayoutParams ) {
184- frameLayoutParams = (FrameLayout .LayoutParams ) layoutParams ;
185- } else {
186- frameLayoutParams = new FrameLayout .LayoutParams (
187- ViewGroup .LayoutParams .MATCH_PARENT ,
188- ViewGroup .LayoutParams .WRAP_CONTENT
189- );
190- }
191- frameLayoutParams .height = ViewGroup .LayoutParams .WRAP_CONTENT ;
192- frameLayoutParams .width = ViewGroup .LayoutParams .MATCH_PARENT ;
193- listView .setLayoutParams (frameLayoutParams );
194- }
130+ private void openSupportEmail () {
131+ Intent intent = new Intent (Intent .ACTION_SENDTO );
132+ String supportEmail = getString (R .string .contact_support_email );
133+ intent .setData (Uri .parse ("mailto:" + supportEmail ));
134+ intent .putExtra (Intent .EXTRA_EMAIL , new String []{supportEmail });
135+ intent .putExtra (Intent .EXTRA_SUBJECT ,
136+ getString (R .string .contact_support_email_subject , getString (R .string .app_name )));
137+ intent .putExtra (Intent .EXTRA_TEXT , getString (R .string .contact_support_email_body ));
195138
196- private void launchGooglePlayReviews () {
197- Uri uri = Uri .parse ("https://play.google.com/store/apps/details?id=" + requireActivity ().getPackageName () + "&showAllReviews=true" );
198- Intent intent = new Intent (Intent .ACTION_VIEW , uri );
199- intent .addFlags (Intent .FLAG_ACTIVITY_NEW_TASK );
200- try {
201- startActivity (intent );
202- } catch (ActivityNotFoundException e ) {
203- Snackbar .make (requireView (),
204- R .string .snack_unable_to_open_google_play_store ,
205- Snackbar .LENGTH_SHORT )
206- .show ();
207- }
139+ try {
140+ startActivity (Intent .createChooser (intent , getString (R .string .contact_support_title )));
141+ } catch (ActivityNotFoundException e ) {
142+ Snackbar .make (binding .getRoot (), R .string .support_link_unavailable , Snackbar .LENGTH_SHORT ).show ();
208143 }
209144 }
210145
0 commit comments