Android proqramda ardıcıllıq

Mənim əlimdə proqram var və qeydiyyat tələb edir. Üç aşama var 1. Qeydiyyatlı deyilsə qeydiyyat pəncərəsi açılır 2. Nömrəsini daxil edir 3. Sonra nömrəyə mesaj gəlir təsdiq edir Buna görə istəyirəm nömrəni yazsın bazaya əlavə olunsun amma aktivetmə nömrəsi gəlməsin ikinci aşamada sona yetsin main səhifəsi açılsın.

Verilmiş cavablar və yazılan şərhlər (1 cavab var)

Elvin (2016-11-29 17:12:53)
Açılış ekranı budur [code]package com.emgroup.whatssms.activities.main; import android.Manifest; import android.accounts.Account; import android.accounts.AccountAuthenticatorActivity; import android.accounts.AccountManager; import android.annotation.TargetApi; import android.content.Context; import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.os.CountDownTimer; import android.os.Handler; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.TextInputEditText; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.text.Editable; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.TextView; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.google.i18n.phonenumbers.NumberParseException; import com.google.i18n.phonenumbers.PhoneNumberUtil; import com.google.i18n.phonenumbers.Phonenumber; import com.emgroup.whatssms.R; import com.emgroup.whatssms.adapters.recyclerView.CountriesAdapter; import com.emgroup.whatssms.adapters.recyclerView.TextWatcherAdapter; import com.emgroup.whatssms.api.APIAuthentication; import com.emgroup.whatssms.api.APIService; import com.emgroup.whatssms.app.EndPoints; import com.emgroup.whatssms.app.WhatsCloneApplication; import com.emgroup.whatssms.helpers.AppHelper; import com.emgroup.whatssms.helpers.PreferenceManager; import com.emgroup.whatssms.helpers.SignUpPreferenceManager; import com.emgroup.whatssms.models.CountriesModel; import com.emgroup.whatssms.models.JoinModel; import com.emgroup.whatssms.models.users.Pusher; import com.emgroup.whatssms.services.SMSVerificationService; import com.emgroup.whatssms.sync.AuthenticatorService; import java.util.ArrayList; import java.util.List; import butterknife.Bind; import butterknife.ButterKnife; import de.greenrobot.event.EventBus; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; /** * Created by Abderrahim El imame on 09/02/2016. * Email : abderrahim.elimame@gmail.com */ public class WelcomeActivity extends AccountAuthenticatorActivity implements View.OnClickListener { @Bind(R.id.numberPhone) TextInputEditText phoneNumberWrapper; @Bind(R.id.inputOtpWrapper) TextInputEditText inputOtpWrapper; @Bind(R.id.btn_request_sms) FloatingActionButton btnNext; @Bind(R.id.btn_verify_otp) TextView btnVerifyOtp; @Bind(R.id.viewPagerVertical) ViewPager viewPager; @Bind(R.id.TimeCount) TextView textViewShowTime; @Bind(R.id.Resend) TextView Resend; @Bind(R.id.progressbar) ProgressBar mProgressBar; @Bind(R.id.code) TextView code; @Bind(R.id.btn_change_number) TextView EditBtn; @Bind(R.id.toolbar) LinearLayout toolbar; @Bind(R.id.CounrtriesList) RecyclerView CountriesList; @Bind(R.id.txtEditMobile) TextView txtEditMobile; @Bind(R.id.search_input) TextInputEditText searchInput; @Bind(R.id.clear_btn_search_view) ImageView clearBtn; private CountriesAdapter mCountriesAdapter; private String Code; private String Country; private CountDownTimer countDownTimer; private long totalTimeCountInMilliseconds; private long seconds, ResumeSeconds; private ViewPagerAdapter adapter; private SignUpPreferenceManager mSignUpPreferenceManager; public static final String PARAM_AUTH_TOKEN_TYPE = "auth.token"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_welcome); ButterKnife.bind(this); EventBus.getDefault().register(this); initializerView(); } /** * method to initialize the view */ private void initializerView() { /** * Checking if user already connected */ if (PreferenceManager.getToken(this) != null) { Intent intent = new Intent(this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); finish(); } initializerSearchView(searchInput, clearBtn); clearBtn.setOnClickListener(v -> clearSearchView()); LinearLayoutManager mLinearLayoutManager = new LinearLayoutManager(WhatsCloneApplication.getAppContext()); CountriesList.setLayoutManager(mLinearLayoutManager); mCountriesAdapter = new CountriesAdapter(this); CountriesList.setAdapter(mCountriesAdapter); Gson gson = new Gson(); final List list = gson.fromJson(AppHelper.loadJSONFromAsset(this), new TypeToken<List>() { }.getType()); mCountriesAdapter.setCountries(list); Code = "" + list.get(1).getDial_code(); Country = "" + list.get(1).getName(); code.setText(Code); toolbar.setBackgroundColor(AppHelper.getColor(this, R.color.colorPrimary)); btnNext.setOnClickListener(this); btnVerifyOtp.setOnClickListener(this); Resend.setOnClickListener(this); EditBtn.setOnClickListener(this); mSignUpPreferenceManager = new SignUpPreferenceManager(this); adapter = new ViewPagerAdapter(); viewPager.setAdapter(adapter); /** * Checking if the device is waiting for sms * showing the user OTP screen */ if (mSignUpPreferenceManager.isWaitingForSms()) { viewPager.setCurrentItem(1); resumeTimer(); } if (viewPager.getCurrentItem() == 1) { if (AppHelper.checkPermission(this, Manifest.permission.RECEIVE_SMS)) { AppHelper.LogCat("RECEIVE SMS permission already granted."); } else { AppHelper.LogCat("Please request RECEIVE SMS permission."); AppHelper.requestPermission(this, Manifest.permission.RECEIVE_SMS); } if (AppHelper.checkPermission(this, Manifest.permission.READ_SMS)) { AppHelper.LogCat("READ SMS permission already granted."); } else { AppHelper.LogCat("Please request READ SMS permission."); AppHelper.requestPermission(this, Manifest.permission.READ_SMS); } } } /** * method to clear/reset search view content */ public void clearSearchView() { if (searchInput.getText() != null) { searchInput.setText(""); Gson gson = new Gson(); final List list = gson.fromJson(AppHelper.loadJSONFromAsset(this), new TypeToken<List>() { }.getType()); mCountriesAdapter.setCountries(list); } } /** * method to initial the search view */ public void initializerSearchView(TextInputEditText searchInput, ImageView clearSearchBtn) { final Context context = this; searchInput.setOnFocusChangeListener((v, hasFocus) -> { if (!hasFocus) { InputMethodManager inputManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } }); searchInput.addTextChangedListener(new TextWatcherAdapter() { @TargetApi(Build.VERSION_CODES.JELLY_BEAN) @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { clearSearchBtn.setVisibility(View.GONE); } @TargetApi(Build.VERSION_CODES.JELLY_BEAN) @Override public void onTextChanged(CharSequence s, int start, int before, int count) { mCountriesAdapter.setString(s.toString()); Search(s.toString().trim()); clearSearchBtn.setVisibility(View.VISIBLE); } @TargetApi(Build.VERSION_CODES.JELLY_BEAN) @Override public void afterTextChanged(Editable s) { if (s.length() == 0) { clearSearchBtn.setVisibility(View.GONE); Gson gson = new Gson(); final List list = gson.fromJson(AppHelper.loadJSONFromAsset(WelcomeActivity.this), new TypeToken<List>() { }.getType()); mCountriesAdapter.setCountries(list); } } }); } /** * method to start searching * * @param string this is parameter of Search method */ public void Search(String string) { final List filteredModelList; filteredModelList = FilterList(string); if (filteredModelList.size() != 0) { mCountriesAdapter.animateTo(filteredModelList); CountriesList.scrollToPosition(0); } } /** * method to filter the list * * @param query this is parameter of FilterList method * @return this for what method return */ private List FilterList(String query) { query = query.toLowerCase(); List countriesModelList = mCountriesAdapter.getCountries(); final List filteredModelList = new ArrayList(); for (CountriesModel countriesModel : countriesModelList) { final String name = countriesModel.getName().toLowerCase(); if (name.contains(query)) { filteredModelList.add(countriesModel); } } return filteredModelList; } /** * method to validate user information */ private void validateInformation() { String mobile = null; try { mobile = phoneNumberWrapper.getText().toString().trim(); } catch (Exception e) { AppHelper.LogCat(" number mobile is null Exception WelcomeActivity " + e.getMessage()); } if (mobile != null) { PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(); Phonenumber.PhoneNumber phNumberProto = null; Code = Code.replace("+", ""); String countryCode = phoneUtil.getRegionCodeForCountryCode(Integer.parseInt(Code)); try { phNumberProto = phoneUtil.parse(mobile, countryCode); } catch (NumberParseException e) { e.printStackTrace(); AppHelper.LogCat("number error NumberParseException WelcomeActivity" + mobile); phoneNumberWrapper.setError(getString(R.string.enter_a_val_number)); } if (phNumberProto != null) { boolean isValid = phoneUtil.isValidNumber(phNumberProto); if (isValid) { String internationalFormat = phoneUtil.format(phNumberProto, PhoneNumberUtil.PhoneNumberFormat.E164); mSignUpPreferenceManager.setMobileNumber(internationalFormat); requestForSMS(internationalFormat, Country); } else { phoneNumberWrapper.setError(getString(R.string.enter_a_val_number)); } } } else { phoneNumberWrapper.setError(getString(R.string.enter_a_val_number)); } } /** * method to resend a request for SMS * * @param mobile this is parameter of ResendRequestForSMS method */ private void ResendRequestForSMS(String mobile) { APIAuthentication mAPIAuthentication = APIService.RootService(APIAuthentication.class, EndPoints.BASE_URL); Call ResendModelCall = mAPIAuthentication.resend(mobile); ResendModelCall.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { if (response.isSuccessful()) { if (response.body().isSuccess()) { Resend.setVisibility(View.GONE); mProgressBar.setVisibility(View.VISIBLE); textViewShowTime.setVisibility(View.VISIBLE); setTimer(); startTimer(); mSignUpPreferenceManager.setIsWaitingForSms(true); viewPager.setCurrentItem(1); txtEditMobile.setText(mSignUpPreferenceManager.getMobileNumber()); } else { AppHelper.CustomToast(WelcomeActivity.this, response.body().getMessage()); } } else { AppHelper.CustomToast(WelcomeActivity.this, response.message()); } } @Override public void onFailure(Call call, Throwable t) { AppHelper.CustomToast(WelcomeActivity.this, t.getMessage()); } }); } /** * method to send an SMS request to provider * * @param mobile this the first parameter of requestForSMS method * @param country this the second parameter of requestForSMS method */ private void requestForSMS(String mobile, String country) { APIAuthentication mAPIAuthentication = APIService.RootService(APIAuthentication.class, EndPoints.BASE_URL); Call JoinModelCall = mAPIAuthentication.join(mobile, country); AppHelper.showDialog(this, getString(R.string.set_back_and_keep_calm_you_will_receive_an_sms_of_verification)); JoinModelCall.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { if (response.isSuccessful()) { if (response.body().isSuccess()) { AppHelper.hideDialog(); setTimer(); startTimer(); mSignUpPreferenceManager.setIsWaitingForSms(true); viewPager.setCurrentItem(1); txtEditMobile.setText(mSignUpPreferenceManager.getMobileNumber()); String accountType = getIntent().getStringExtra(PARAM_AUTH_TOKEN_TYPE); if (accountType == null) { accountType = AuthenticatorService.ACCOUNT_TYPE; } AccountManager accMgr = AccountManager.get(WelcomeActivity.this); // This is the magic that add the account to the Android Account Manager final Account account = new Account(getResources().getString(R.string.app_name), accountType); accMgr.addAccountExplicitly(account, response.body().getCode(), null); // Now we tell our caller, could be the Android Account Manager or even our own application // that the process was successful final Intent intent = new Intent(); intent.putExtra(AccountManager.KEY_ACCOUNT_NAME, getResources().getString(R.string.app_name)); intent.putExtra(AccountManager.KEY_ACCOUNT_TYPE, accountType); intent.putExtra(AccountManager.KEY_AUTHTOKEN, accountType); setAccountAuthenticatorResult(intent.getExtras()); setResult(RESULT_OK, intent); AppHelper.LogCat("Failed here 0 " + response.body().getMessage()); new Handler().postDelayed(() -> testRun(response.body().getCode()), 4000); } else { AppHelper.hideDialog(); AppHelper.CustomToast(WelcomeActivity.this, response.body().getMessage()); AppHelper.LogCat("Failed here 1 " + response.body().getMessage()); } } else { AppHelper.hideDialog(); AppHelper.CustomToast(WelcomeActivity.this, response.message()); AppHelper.LogCat("Failed here 2 " + response.message()); } } @Override public void onFailure(Call call, Throwable t) { AppHelper.hideDialog(); AppHelper.LogCat("Failed to create your account " + t.getMessage()); AppHelper.CustomToast(WelcomeActivity.this, "Please your internet connection and try again"); //Hide the Keyboard InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(phoneNumberWrapper.getWindowToken(), 0); } }); } private void testRun(String code){ if (!code.isEmpty()) { Intent otpIntent = new Intent(getApplicationContext(), SMSVerificationService.class); otpIntent.putExtra("code", code); startService(otpIntent); } else { AppHelper.CustomToast(this, getString(R.string.please_enter_your_ver_code)); } } /** * method to verify the code received by user then activating the user */ private void verificationOfCode() { String code = inputOtpWrapper.getText().toString().trim(); if (!code.isEmpty()) { Intent otpIntent = new Intent(getApplicationContext(), SMSVerificationService.class); otpIntent.putExtra("code", code); startService(otpIntent); } else { AppHelper.CustomToast(this, getString(R.string.please_enter_your_ver_code)); } } @Override public void onClick(View view) { switch (view.getId()) { case R.id.btn_request_sms: validateInformation(); break; case R.id.btn_verify_otp: verificationOfCode(); break; case R.id.btn_change_number: viewPager.setCurrentItem(0); stopTimer(); PreferenceManager.setID(0, this); PreferenceManager.setToken(null, this); mSignUpPreferenceManager.setIsWaitingForSms(false); break; case R.id.Resend: viewPager.setCurrentItem(1); ResendRequestForSMS(mSignUpPreferenceManager.getMobileNumber()); break; } } class ViewPagerAdapter extends PagerAdapter { @Override public int getCount() { return 2; } @Override public boolean isViewFromObject(View view, Object object) { return view == ((View) object); } public Object instantiateItem(View collection, int position) { int resId = 0; switch (position) { case 0: resId = R.id.numberPhone_layout; break; case 1: resId = R.id.layout_verification; break; } return findViewById(resId); } } private void setTimer() { int time = 4; mProgressBar.setMax(60 * time); totalTimeCountInMilliseconds = 60 * time * 1000; } private void startTimer() { countDownTimer = new WhatsCloneCounter(totalTimeCountInMilliseconds, 500).start(); } public void stopTimer() { if (countDownTimer != null) { countDownTimer.cancel(); } } public void resumeTimer() { countDownTimer = new WhatsCloneCounter(ResumeSeconds, 500).start(); } public class WhatsCloneCounter extends CountDownTimer { public WhatsCloneCounter(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); } @Override public void onTick(long leftTimeInMilliseconds) { ResumeSeconds = leftTimeInMilliseconds; seconds = leftTimeInMilliseconds / 1000; mProgressBar.setProgress((int) (leftTimeInMilliseconds / 1000)); textViewShowTime.setText(String.format("%02d", seconds / 60) + ":" + String.format("%02d", seconds % 60)); } @Override public void onFinish() { textViewShowTime.setVisibility(View.GONE); mProgressBar.setVisibility(View.GONE); Resend.setVisibility(View.VISIBLE); } } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); } /** * method of EventBus * * @param pusher this is parameter of onEventMainThread method */ @SuppressWarnings("unused") public void onEventMainThread(Pusher pusher) { switch (pusher.getAction()) { case "countryCode": Code = "" + pusher.getData(); code.setText(Code); break; case "countryName": Country = "" + pusher.getData(); break; } } } [/code]

Mövzu üzrə bənzər suallara da baxa bilərsiniz.

Android-də VPN (virtual private network) funksiyası

Nokia Lumia 925 bu telefonu almağa dəyər?

Telefon 2g ilə video

Xperia Z-də sistemi yenidən yazmaq

Android proqramı yükləmək

Java və android proqramlama nı öyrənmək istiyirəm.