app/build.gradle | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/AndroidManifest.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/taoke/autopay/android/service/SimulationService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/taoke/autopay/android/service/ZfbJob.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/taoke/autopay/android/ui/SettingsActivity.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/taoke/autopay/android/ui/WebViewActivity.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/layout/activity_webview.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
app/build.gradle
@@ -24,9 +24,9 @@ buildConfigField("String", "API_URL", "\"http://193.112.35.168:9011/\"") } release { // buildConfigField("String", "API_URL", "\"http://api.izxwl.com:80/\"") buildConfigField("String", "API_URL", "\"http://api.izxwl.com:80/\"") // 测试状态 buildConfigField("String", "API_URL", "\"http://193.112.35.168:9011/\"") // buildConfigField("String", "API_URL", "\"http://193.112.35.168:9011/\"") proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" app/src/main/AndroidManifest.xml
@@ -42,6 +42,17 @@ android:launchMode="singleTask" /> <activity android:name=".ui.SettingsActivity" /> <activity android:name=".ui.WebViewActivity" android:exported="true"> <!-- <intent-filter>--> <!-- <action android:name="android.intent.action.MAIN" />--> <!-- <category android:name="android.intent.category.LAUNCHER" />--> <!-- </intent-filter>--> </activity> <service android:name=".service.SimulationService" android:enabled="true" app/src/main/java/com/taoke/autopay/android/service/SimulationService.java
@@ -80,7 +80,7 @@ } catch (Throwable e) { e.printStackTrace(); } mHandler.postDelayed(this, 1 * 1000); // 隔5秒检测一次,取下一个任务 mHandler.postDelayed(this, 1 * 1000); // 隔1秒检测一次,取下一个任务 } }; mHandler.post(mRunnable); app/src/main/java/com/taoke/autopay/android/service/ZfbJob.java
@@ -100,6 +100,13 @@ @Override public void start() { LogUtils.tag(TAG).i("支付任务启动:" + this.order.id); // 延时1秒启动,防止上一个任务还没处理完成 try { Thread.sleep(1000); } catch (InterruptedException e) { throw new RuntimeException(e); } extraState = 0; mDisposableTimeout = Single .just(true) @@ -281,9 +288,15 @@ if (clipboard != null) { clipboard.setPrimaryClip(ClipData.newPlainText("label", order.key)); } try { Thread.sleep(100); } catch (InterruptedException e) { throw new RuntimeException(e); } // context.startActivity(context.getPackageManager().getLaunchIntentForPackage("com.eg.android.AlipayGphone")); //下面这个是直接打开支付宝首页,但是没有测试。上面一句代码打开支付宝,但是可能不是首页,是上一次的支付宝页面。要保证每次流程正确,可能需要像下面这样打开。 LogUtils.tag(TAG).i("启动支付宝:" + this.order.id); context.startActivity(new Intent() .setAction(Intent.ACTION_MAIN) .addCategory(Intent.CATEGORY_HOME) app/src/main/java/com/taoke/autopay/android/ui/SettingsActivity.java
@@ -2,6 +2,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.Toast; @@ -30,6 +31,8 @@ import com.taoke.autopay.android.utils.accessibility.AccessibilityNodeInfoUtils; import com.taoke.autopay.android.utils.accessibility.ClassNameNodeFilter; import com.taoke.autopay.android.utils.accessibility.TextNodeFilter; import java.net.URLEncoder; public class SettingsActivity extends AppCompatActivity { @@ -97,6 +100,14 @@ mViewBinding.tvTest.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(String.format("alipays://platformapi/startapp?appId=20000067&url=%s", URLEncoder.encode("https://ur.alipay.com/_qHNy1BGCl0hq70u17PWl4")))); // startActivity(intent); // if(1>0){ // return; // } // Order testOrder=new Order(); testOrder.id="123123123123"; testOrder.state="0"; app/src/main/java/com/taoke/autopay/android/ui/WebViewActivity.java
New file @@ -0,0 +1,84 @@ package com.taoke.autopay.android.ui; import android.Manifest; import android.content.Intent; import android.os.Bundle; import android.os.Environment; import android.text.method.HideReturnsTransformationMethod; import android.text.method.PasswordTransformationMethod; import android.util.Log; import android.webkit.WebChromeClient; import android.webkit.WebResourceRequest; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Toast; import com.apkfuns.log2file.LogFileEngineFactory; import com.apkfuns.logutils.LogUtils; import com.taoke.autopay.android.data.local.LocalStore; import com.taoke.autopay.android.data.local.entity.LoginAccount; import com.taoke.autopay.android.data.network.RestAPI; import com.taoke.autopay.android.databinding.ActivitySingInBinding; import com.taoke.autopay.android.databinding.ActivityWebviewBinding; import com.taoke.autopay.android.utils.MD5Utils; import com.taoke.autopay.android.utils.PermissionHelper; import com.taoke.autopay.android.utils.PermissionInterface; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; import io.reactivex.rxjava3.disposables.Disposable; import io.reactivex.rxjava3.schedulers.Schedulers; public class WebViewActivity extends AppCompatActivity { private static final String TAG = "WebViewActivity"; private ActivityWebviewBinding mViewBinding; private Disposable mDisposable; private PermissionHelper mPermissionsChecker; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EdgeToEdge.enable(this); mViewBinding = ActivityWebviewBinding.inflate(getLayoutInflater()); setContentView(mViewBinding.getRoot()); ViewCompat.setOnApplyWindowInsetsListener(mViewBinding.main, (v, insets) -> { Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); mViewBinding.webview.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { Log.i(TAG,request.getUrl().toString()); return super.shouldOverrideUrlLoading(view, request); } }); mViewBinding.webview.setWebChromeClient(new WebChromeClient(){ }); WebSettings webSetting = mViewBinding.webview.getSettings(); webSetting.setJavaScriptEnabled(true); webSetting.setTextZoom(100); webSetting.setDomStorageEnabled(true); mViewBinding.webview.loadUrl("https://ur.alipay.com/_qHNy1BGCl0hq70u17PWl4"); } @Override protected void onDestroy() { if (mDisposable != null) { mDisposable.dispose(); } super.onDestroy(); } } app/src/main/res/layout/activity_webview.xml
New file @@ -0,0 +1,15 @@ <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".ui.WebViewActivity"> <WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent"></WebView> </androidx.constraintlayout.widget.ConstraintLayout>