Commit 0e112132 by amateur

1

1 parent 12411422
Showing 29 changed files with 374 additions and 87 deletions
...@@ -7,7 +7,7 @@ android { ...@@ -7,7 +7,7 @@ android {
buildToolsVersion "30.0.3" buildToolsVersion "30.0.3"
defaultConfig { defaultConfig {
applicationId "com.polysoft.nafmii" applicationId "com.whaty.nafmii"
minSdkVersion 24 minSdkVersion 24
targetSdkVersion 29 targetSdkVersion 29
versionCode 1 versionCode 1
...@@ -17,7 +17,6 @@ android { ...@@ -17,7 +17,6 @@ android {
buildConfigField "String", "API_HOST", "\"http://new.ynyc6666.com/shop/server/\"" buildConfigField "String", "API_HOST", "\"http://new.ynyc6666.com/shop/server/\""
buildConfigField "String", "WX_APPID", "\"1234567890\"" buildConfigField "String", "WX_APPID", "\"1234567890\""
buildConfigField "boolean", "SHOW_INPUT", "true" buildConfigField "boolean", "SHOW_INPUT", "true"
ndk { ndk {
abiFilters "armeabi", "armeabi-v7a", "x86", "mips" abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
} }
...@@ -39,7 +38,7 @@ android { ...@@ -39,7 +38,7 @@ android {
resValue "string", "app_name", "Nafmii-beta" resValue "string", "app_name", "Nafmii-beta"
applicationIdSuffix "beta" applicationIdSuffix "beta"
} }
dev { debug {
minifyEnabled false minifyEnabled false
resValue "string", "app_name", "Nafmii-dev" resValue "string", "app_name", "Nafmii-dev"
applicationIdSuffix "dev" applicationIdSuffix "dev"
...@@ -49,6 +48,14 @@ android { ...@@ -49,6 +48,14 @@ android {
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8
} }
signingConfigs {
debug {
storeFile file('D:\\studio-workspace\\nafmii\\nafmii.keystore')
storePassword 'whaty123'
keyPassword 'whaty123'
keyAlias 'whaty'
}
}
ndkVersion '20.0.5594570' ndkVersion '20.0.5594570'
} }
......
package com.polysoft.nafmii;
import android.content.Context;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
/**
* Instrumented test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
assertEquals("com.polysoft.nafmill", appContext.getPackageName());
}
}
\ No newline at end of file \ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.polysoft.nafmii"> package="com.whaty.nafmii">
<uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.USE_FINGERPRINT" /> <uses-permission android:name="android.permission.USE_FINGERPRINT" />
...@@ -54,6 +54,16 @@ ...@@ -54,6 +54,16 @@
android:name="com.tencent.smtt.export.external.DexClassLoaderProviderService" android:name="com.tencent.smtt.export.external.DexClassLoaderProviderService"
android:label="dexopt" android:label="dexopt"
android:process=":dexopt" /> android:process=":dexopt" />
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
</application> </application>
</manifest> </manifest>
\ No newline at end of file \ No newline at end of file
...@@ -3,7 +3,7 @@ package com.polysoft.nafmii.constants; ...@@ -3,7 +3,7 @@ package com.polysoft.nafmii.constants;
public class Constants { public class Constants {
public static final String MODULE_URL_HOME = "file:///android_asset/dist/index.html#/"; public static final String MODULE_URL_HOME = "file:///android_asset/dist/index.html#/";
public static final String MODULE_URL_MY = ""; public static final String MODULE_URL_MY = "file:///android_asset/dist/index.html#/user/center";
public static final String MODULE_URL_MEMBER = ""; public static final String MODULE_URL_MEMBER = "";
public static final String MODULE_URL_LEARN = "http://debugtbs.qq.com"; public static final String MODULE_URL_LEARN = "http://debugtbs.qq.com";
......
package com.polysoft.nafmii.constants; package com.polysoft.nafmii.constants;
import com.polysoft.nafmii.BuildConfig;
import com.polysoft.nafmii.enums.StateEnum;
import com.polysoft.nafmii.net.OkhttpApi; import com.polysoft.nafmii.net.OkhttpApi;
import com.polysoft.nafmii.net.RequestBack; import com.polysoft.nafmii.net.RequestBack;
import com.whaty.nafmii.BuildConfig;
import java.util.Map; import java.util.Map;
......
...@@ -19,11 +19,11 @@ import com.alibaba.fastjson.JSONObject; ...@@ -19,11 +19,11 @@ import com.alibaba.fastjson.JSONObject;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.request.target.DrawableImageViewTarget; import com.bumptech.glide.request.target.DrawableImageViewTarget;
import com.bumptech.glide.request.transition.Transition; import com.bumptech.glide.request.transition.Transition;
import com.polysoft.nafmii.BuildConfig;
import com.polysoft.nafmii.R;
import com.polysoft.nafmii.activity.HomeActivity;
import com.polysoft.nafmii.activity.InputUrlActivity;
import com.polysoft.nafmii.utils.IntentUtils; import com.polysoft.nafmii.utils.IntentUtils;
import com.whaty.nafmii.BuildConfig;
import com.whaty.nafmii.R;
import com.whaty.nafmii.activity.HomeActivity;
import com.whaty.nafmii.activity.InputUrlActivity;
public class AdvertisementFragment extends Fragment implements View.OnClickListener { public class AdvertisementFragment extends Fragment implements View.OnClickListener {
......
...@@ -15,7 +15,7 @@ import android.widget.Toast; ...@@ -15,7 +15,7 @@ import android.widget.Toast;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.fragment.app.DialogFragment; import androidx.fragment.app.DialogFragment;
import com.polysoft.nafmii.R; import com.whaty.nafmii.R;
import javax.crypto.Cipher; import javax.crypto.Cipher;
......
package com.polysoft.nafmii.fragment; package com.polysoft.nafmii.fragment;
import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
...@@ -11,13 +14,22 @@ import androidx.annotation.NonNull; ...@@ -11,13 +14,22 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import com.polysoft.nafmii.R; import com.polysoft.nafmii.broadcast.PhotosReceiver;
import com.polysoft.nafmii.utils.BitmapUtils;
import com.polysoft.nafmii.utils.FileProviderUtils;
import com.polysoft.nafmii.utils.IntentUtils;
import com.polysoft.nafmii.utils.PermissionUtils;
import com.polysoft.nafmii.utils.ToastUtils;
import com.polysoft.nafmii.webview.IWebview; import com.polysoft.nafmii.webview.IWebview;
import com.polysoft.nafmii.webview.MyWebChromeClient;
import com.polysoft.nafmii.webview.MyWebViewClient; import com.polysoft.nafmii.webview.MyWebViewClient;
import com.polysoft.nafmii.webview.WebviewHandler; import com.polysoft.nafmii.webview.WebviewHandler;
import com.polysoft.nafmii.webview.WebviewLoadListener; import com.polysoft.nafmii.webview.WebviewLoadListener;
import com.polysoft.nafmii.webview.X5WebviewUtils; import com.polysoft.nafmii.webview.X5WebviewUtils;
import com.tencent.smtt.sdk.WebView; import com.tencent.smtt.sdk.WebView;
import com.whaty.nafmii.R;
import java.io.File;
public class WebViewFragment extends Fragment implements WebviewLoadListener { public class WebViewFragment extends Fragment implements WebviewLoadListener {
...@@ -27,6 +39,7 @@ public class WebViewFragment extends Fragment implements WebviewLoadListener { ...@@ -27,6 +39,7 @@ public class WebViewFragment extends Fragment implements WebviewLoadListener {
private WebView webView; private WebView webView;
private WebviewHandler webviewHandler; private WebviewHandler webviewHandler;
private ValueCallback<Uri[]> filePathCallback;
public static WebViewFragment newInstances(String url) { public static WebViewFragment newInstances(String url) {
WebViewFragment fragment = new WebViewFragment(); WebViewFragment fragment = new WebViewFragment();
...@@ -56,6 +69,7 @@ public class WebViewFragment extends Fragment implements WebviewLoadListener { ...@@ -56,6 +69,7 @@ public class WebViewFragment extends Fragment implements WebviewLoadListener {
private void initWebview() { private void initWebview() {
WebView webView = X5WebviewUtils.create(getActivity()); WebView webView = X5WebviewUtils.create(getActivity());
webView.setWebChromeClient(new MyWebChromeClient(this));
webView.setWebViewClient(new MyWebViewClient(this)); webView.setWebViewClient(new MyWebViewClient(this));
this.webviewHandler = new WebviewHandler(this, webView); this.webviewHandler = new WebviewHandler(this, webView);
...@@ -91,6 +105,64 @@ public class WebViewFragment extends Fragment implements WebviewLoadListener { ...@@ -91,6 +105,64 @@ public class WebViewFragment extends Fragment implements WebviewLoadListener {
@Override @Override
public void onShowFileChooser(ValueCallback<Uri[]> filePathCallback, String[] acceptTypes, boolean isCapture) { public void onShowFileChooser(ValueCallback<Uri[]> filePathCallback, String[] acceptTypes, boolean isCapture) {
String[] permissions = new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE};
if (PermissionUtils.checkAndRequestMorePermissions(getContext(), permissions)) {
Intent intent = IntentUtils.chooserIntent(super.getContext());
if (null != intent) {
this.filePathCallback = filePathCallback;
super.startActivityForResult(intent, IntentUtils.ACTIVITY_CODE_CHOOSERFILE);
} else {
filePathCallback.onReceiveValue(null);
}
} else {
filePathCallback.onReceiveValue(null);
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable @org.jetbrains.annotations.Nullable Intent data) {
if (IntentUtils.ACTIVITY_CODE_CHOOSERFILE == requestCode) {
if (Activity.RESULT_OK != resultCode) {
ToastUtils.showLong("操作失败!");
this.filePathCallback.onReceiveValue(null);
} else if (null != this.filePathCallback) {
if (null != data && null != data.getData()) {
Uri imgUrl = data.getData();
String newFilepath = IntentUtils.getTakePhotoPath(super.getContext());
String filepath = FileProviderUtils.getUriPath(super.getContext(), imgUrl);
File file = BitmapUtils.compressBitmap(filepath, newFilepath);
Uri uri = FileProviderUtils.getUriForFile(super.getContext(), file);
this.filePathCallback.onReceiveValue(new Uri[]{uri});
} else {
String filepath = IntentUtils.getTakePhotoPath(super.getContext());
File file = BitmapUtils.compressBitmap(filepath);
if (file.exists()) {
Uri uri = FileProviderUtils.getUriForFile(super.getContext(), file);
this.filePathCallback.onReceiveValue(new Uri[]{uri});
} else {
this.filePathCallback.onReceiveValue(null);
}
}
}
this.filePathCallback = null;
} else if (IntentUtils.ACTIVITY_CODE_CAMERA == requestCode
|| IntentUtils.ACTIVITY_CODE_ALBUM == requestCode) {
if (Activity.RESULT_OK == resultCode) {
if (IntentUtils.ACTIVITY_CODE_CAMERA == requestCode) {
String filepath = IntentUtils.getTakePhotoPath(super.getContext());
File file = BitmapUtils.compressBitmap(filepath);
PhotosReceiver.sendBroadcastCamera(super.getContext(), file.getAbsolutePath());
} else if (null != data && null != data.getData()){
Uri imgUrl = data.getData();
String newFilepath = IntentUtils.getTakePhotoPath(super.getContext());
String filepath = FileProviderUtils.getUriPath(super.getContext(), imgUrl);
File file = BitmapUtils.compressBitmap(filepath, newFilepath);
PhotosReceiver.sendBroadcastAlbum(super.getContext(), file.getAbsolutePath());
}
} else {
ToastUtils.showLong("操作失败!");
}
}
} }
} }
\ No newline at end of file \ No newline at end of file
package com.polysoft.nafmii.utils;
import android.util.Log;
/**
* create: 2020/6/9
* author: zw
* do:打印工具类F
*/
public class LogUtil {
public static int logGrade = 6;
public static void e(String TAG, String Message) {
if (logGrade <= 5) {
Log.e(TAG, Message);
}
}
public static void e(String TAG, String Message, Throwable thr) {
if (logGrade <= 5) {
Log.e(TAG, Message,thr );
}
}
public static void w(String TAG, String Message) {
if (logGrade <= 4) {
Log.w(TAG, Message);
}
}
public static void w(String TAG, String Message, Throwable thr) {
if (logGrade <= 4) {
Log.w(TAG, Message,thr);
}
}
public static void i(String TAG, String Message) {
if (logGrade <= 3) {
Log.i(TAG, Message);
}
}
public static void i(String TAG, String Message, Throwable thr) {
if (logGrade <= 3) {
Log.i(TAG, Message,thr);
}
}
public static void d(String TAG, String Message) {
if (logGrade <= 2) {
Log.d(TAG, Message);
}
}
public static void d(String TAG, String Message, Throwable thr) {
if (logGrade <= 2) {
Log.d(TAG, Message,thr);
}
}
}
...@@ -14,8 +14,6 @@ import android.widget.FrameLayout; ...@@ -14,8 +14,6 @@ import android.widget.FrameLayout;
import androidx.annotation.IntDef; import androidx.annotation.IntDef;
import com.polysoft.nafmii.R;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Field; import java.lang.reflect.Field;
......
package com.polysoft.nafmii.webview;
import android.net.Uri;
import android.text.TextUtils;
import com.tencent.smtt.export.external.interfaces.ConsoleMessage;
import com.tencent.smtt.export.external.interfaces.JsResult;
import com.tencent.smtt.sdk.ValueCallback;
import com.tencent.smtt.sdk.WebChromeClient;
import com.tencent.smtt.sdk.WebView;
public class MyWebChromeClient extends WebChromeClient {
private final WebviewLoadListener listener;
public MyWebChromeClient(WebviewLoadListener listener) {
this.listener = listener;
}
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
return super.onJsAlert(view, url, message, result);
}
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (null != this.listener) {
this.listener.onWebviewLoad(WebviewLoadListener.TYPE_PROGRESS, newProgress);
}
super.onProgressChanged(view, newProgress);
}
/**
* 16(Android 4.1.2) <= API <= 20(Android 4.4W.2)回调此方法
*/
public void openFileChooser(final ValueCallback<Uri> uploadMsg, String acceptType, String capture) {
if (null == this.listener) {
return;
}
this.listener.onShowFileChooser((ValueCallback<Uri[]>) value -> {
for (Uri uri : value) {
uploadMsg.onReceiveValue(uri);
}
}, new String[]{acceptType}, TextUtils.isEmpty(capture));
}
@Override
public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) {
if (null == this.listener) {
return super.onShowFileChooser(webView, filePathCallback, fileChooserParams);
}
String[] acceptTypes = fileChooserParams.getAcceptTypes();
boolean captureEnabled = fileChooserParams.isCaptureEnabled();
this.listener.onShowFileChooser(filePathCallback, acceptTypes, captureEnabled);
return true;
}
@Override
public void onCloseWindow(WebView window) {
super.onCloseWindow(window);
}
@Override
public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
return super.onConsoleMessage(consoleMessage);
}
}
...@@ -4,9 +4,9 @@ import android.text.TextUtils; ...@@ -4,9 +4,9 @@ import android.text.TextUtils;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import com.polysoft.nafmii.activity.HomeActivity;
import com.polysoft.nafmii.bean.MenuBean; import com.polysoft.nafmii.bean.MenuBean;
import com.tencent.smtt.sdk.WebView; import com.tencent.smtt.sdk.WebView;
import com.whaty.nafmii.activity.HomeActivity;
public class WebviewHandler implements IWebview { public class WebviewHandler implements IWebview {
......
...@@ -6,11 +6,11 @@ import android.os.Build; ...@@ -6,11 +6,11 @@ import android.os.Build;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import com.polysoft.nafmii.BuildConfig;
import com.tencent.smtt.export.external.extension.interfaces.IX5WebSettingsExtension; import com.tencent.smtt.export.external.extension.interfaces.IX5WebSettingsExtension;
import com.tencent.smtt.export.external.extension.interfaces.IX5WebViewExtension; import com.tencent.smtt.export.external.extension.interfaces.IX5WebViewExtension;
import com.tencent.smtt.sdk.WebSettings; import com.tencent.smtt.sdk.WebSettings;
import com.tencent.smtt.sdk.WebView; import com.tencent.smtt.sdk.WebView;
import com.whaty.nafmii.BuildConfig;
public class X5WebviewUtils { public class X5WebviewUtils {
......
...@@ -12,8 +12,6 @@ import com.alibaba.fastjson.JSON; ...@@ -12,8 +12,6 @@ import com.alibaba.fastjson.JSON;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.request.target.SimpleTarget; import com.bumptech.glide.request.target.SimpleTarget;
import com.bumptech.glide.request.transition.Transition; import com.bumptech.glide.request.transition.Transition;
import com.polysoft.nafmii.BuildConfig;
import com.polysoft.nafmii.R;
import com.tencent.mm.opensdk.modelbase.BaseReq; import com.tencent.mm.opensdk.modelbase.BaseReq;
import com.tencent.mm.opensdk.modelmsg.SendMessageToWX; import com.tencent.mm.opensdk.modelmsg.SendMessageToWX;
import com.tencent.mm.opensdk.modelmsg.WXMediaMessage; import com.tencent.mm.opensdk.modelmsg.WXMediaMessage;
...@@ -22,6 +20,8 @@ import com.tencent.mm.opensdk.modelpay.PayReq; ...@@ -22,6 +20,8 @@ import com.tencent.mm.opensdk.modelpay.PayReq;
import com.tencent.mm.opensdk.openapi.IWXAPI; import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler; import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
import com.tencent.mm.opensdk.openapi.WXAPIFactory; import com.tencent.mm.opensdk.openapi.WXAPIFactory;
import com.whaty.nafmii.BuildConfig;
import com.whaty.nafmii.R;
public class WechatApi { public class WechatApi {
......
package com.polysoft.nafmii; package com.whaty.nafmii;
import android.app.Application; import android.app.Application;
import com.polysoft.nafmii.utils.CtxUtils; import com.polysoft.nafmii.utils.CtxUtils;
import com.polysoft.nafmii.webview.X5Core;
import me.jessyan.autosize.AutoSizeConfig; import me.jessyan.autosize.AutoSizeConfig;
import ren.yale.android.cachewebviewlib.WebViewCacheInterceptor; import ren.yale.android.cachewebviewlib.WebViewCacheInterceptor;
...@@ -20,7 +19,7 @@ public class MyApplication extends Application { ...@@ -20,7 +19,7 @@ public class MyApplication extends Application {
.setDesignHeightInDp(896); .setDesignHeightInDp(896);
WebViewCacheInterceptor.Builder builder = new WebViewCacheInterceptor.Builder(this); WebViewCacheInterceptor.Builder builder = new WebViewCacheInterceptor.Builder(this);
builder.setDebug(BuildConfig.DEBUG); // builder.setDebug(BuildConfig.DEBUG);
WebViewCacheInterceptorInst.getInstance().init(builder); WebViewCacheInterceptorInst.getInstance().init(builder);
} }
} }
package com.polysoft.nafmii.activity; package com.whaty.nafmii.activity;
import android.os.Bundle; import android.os.Bundle;
import android.view.KeyEvent; import android.view.KeyEvent;
......
package com.polysoft.nafmii.activity; package com.whaty.nafmii.activity;
import android.os.Bundle; import android.os.Bundle;
import android.view.KeyEvent; import android.view.KeyEvent;
...@@ -11,10 +11,10 @@ import androidx.annotation.NonNull; ...@@ -11,10 +11,10 @@ import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager; import androidx.viewpager.widget.ViewPager;
import com.polysoft.nafmii.BuildConfig;
import com.polysoft.nafmii.R;
import com.polysoft.nafmii.utils.IntentUtils; import com.polysoft.nafmii.utils.IntentUtils;
import com.polysoft.nafmii.utils.SpUtils; import com.polysoft.nafmii.utils.SpUtils;
import com.whaty.nafmii.BuildConfig;
import com.whaty.nafmii.R;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
......
package com.polysoft.nafmii.activity; package com.whaty.nafmii.activity;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.view.KeyEvent; import android.view.KeyEvent;
...@@ -7,10 +7,10 @@ import android.widget.RadioButton; ...@@ -7,10 +7,10 @@ import android.widget.RadioButton;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import com.polysoft.nafmii.R;
import com.polysoft.nafmii.activity.home.ModulesFragmentMgr;
import com.polysoft.nafmii.bean.MenuBean; import com.polysoft.nafmii.bean.MenuBean;
import com.polysoft.nafmii.enums.ModulesEnum; import com.polysoft.nafmii.enums.ModulesEnum;
import com.whaty.nafmii.R;
import com.whaty.nafmii.activity.home.ModulesFragmentMgr;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
......
package com.polysoft.nafmii.activity; package com.whaty.nafmii.activity;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.View;
import android.widget.EditText; import android.widget.EditText;
import android.widget.RadioButton; import android.widget.RadioButton;
import com.polysoft.nafmii.R; import androidx.appcompat.app.AppCompatActivity;
import com.polysoft.nafmii.utils.IntentUtils;
import com.polysoft.nafmii.utils.SpUtils; import com.polysoft.nafmii.utils.SpUtils;
import com.polysoft.nafmii.utils.ToastUtils; import com.polysoft.nafmii.utils.ToastUtils;
import com.whaty.nafmii.R;
public class InputUrlActivity extends AppCompatActivity { public class InputUrlActivity extends AppCompatActivity {
......
package com.polysoft.nafmii.activity; package com.whaty.nafmii.activity;
import android.Manifest; import android.Manifest;
import android.os.Bundle; import android.os.Bundle;
import android.os.CountDownTimer; import android.os.CountDownTimer;
import android.util.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction; import androidx.fragment.app.FragmentTransaction;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.polysoft.nafmii.R;
import com.polysoft.nafmii.constants.ServerApi; import com.polysoft.nafmii.constants.ServerApi;
import com.polysoft.nafmii.enums.StateEnum; import com.polysoft.nafmii.enums.StateEnum;
import com.polysoft.nafmii.fragment.AdvertisementFragment; import com.polysoft.nafmii.fragment.AdvertisementFragment;
import com.polysoft.nafmii.fragment.FingerprintDialogFragment;
import com.polysoft.nafmii.net.RequestBack; import com.polysoft.nafmii.net.RequestBack;
import com.polysoft.nafmii.utils.IntentUtils; import com.polysoft.nafmii.utils.IntentUtils;
import com.polysoft.nafmii.utils.PermissionUtils; import com.polysoft.nafmii.utils.PermissionUtils;
import com.polysoft.nafmii.utils.SpUtils; import com.polysoft.nafmii.utils.SpUtils;
import com.polysoft.nafmii.utils.ToastUtils; import com.polysoft.nafmii.utils.ToastUtils;
import com.polysoft.nafmii.webview.X5Core; import com.polysoft.nafmii.webview.X5Core;
import com.whaty.nafmii.R;
public class MainActivity extends BaseActivity { public class MainActivity extends BaseActivity {
......
package com.polysoft.nafmii.activity; package com.whaty.nafmii.activity;
import android.os.Bundle; import android.os.Bundle;
......
package com.polysoft.nafmii.activity.home; package com.whaty.nafmii.activity.home;
import android.app.Activity; import android.app.Activity;
import android.content.Intent; import android.content.Intent;
......
package com.polysoft.nafmii.activity.home; package com.whaty.nafmii.activity.home;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentActivity;
......
package com.whaty.nafmii.wxapi;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import com.polysoft.nafmii.broadcast.ShareReceiver;
import com.polysoft.nafmii.wechat.ShareResult;
import com.polysoft.nafmii.wechat.WechatApi;
import com.tencent.mm.opensdk.modelbase.BaseReq;
import com.tencent.mm.opensdk.modelbase.BaseResp;
import com.tencent.mm.opensdk.modelmsg.SendAuth;
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WechatApi.getInstance(this).handleIntent(getIntent(), this);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
WechatApi.getInstance(this).handleIntent(intent, this);
}
@Override
public void onReq(BaseReq baseReq) {
}
@Override
public void onResp(BaseResp resp) {
if (resp instanceof SendAuth.Resp) {
}
int code = resp.errCode;
if (code == BaseResp.ErrCode.ERR_OK) { // 分享成功
ShareReceiver.sendBroadcast(this, ShareResult.shareSuccess());
} else if (code == BaseResp.ErrCode.ERR_USER_CANCEL) { // 用户取消
ShareReceiver.sendBroadcast(this, ShareResult.shareCancel());
} else { // 分享失败
String errStr = resp.errStr;
ShareReceiver.sendBroadcast(this, ShareResult.shareFail(errStr));
}
super.finish();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
package com.whaty.nafmii.wxapi;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import com.polysoft.nafmii.wechat.WechatApi;
import com.tencent.mm.opensdk.constants.ConstantsAPI;
import com.tencent.mm.opensdk.modelbase.BaseReq;
import com.tencent.mm.opensdk.modelbase.BaseResp;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {
private static final String TAG = WXPayEntryActivity.class.getName();
private IWXAPI api;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WechatApi.getInstance(this).handleIntent(getIntent(), this);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
WechatApi.getInstance(this).handleIntent(intent, this);
}
@Override
public void onReq(BaseReq req) {
}
@Override
public void onResp(BaseResp resp) {
Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);
if (resp.getType() != ConstantsAPI.COMMAND_PAY_BY_WX) {
return;
}
int code = resp.errCode;
if (code == BaseResp.ErrCode.ERR_OK) { // 支付成功
// PayReceiver.sendBroadcast(this, PayResult.success(PayMode.WECHATPAY, null));
} else if (code == BaseResp.ErrCode.ERR_USER_CANCEL) { // 用户取消
// PayReceiver.sendBroadcast(this, PayResult.cancel(PayMode.WECHATPAY));
} else { // 支付失败
String errStr = resp.errStr;
// PayReceiver.sendBroadcast(this, PayResult.fail(PayMode.WECHATPAY, errStr));
}
super.finish();
}
}
\ No newline at end of file \ No newline at end of file
<resources> <resources>
<string name="app_name">nafmii</string>
<string name="dummy_button">Dummy Button</string> <string name="dummy_button">Dummy Button</string>
<string name="dummy_content">DUMMY\nCONTENT</string> <string name="dummy_content">DUMMY\nCONTENT</string>
<string name="title_activity_base">BaseActivity</string> <string name="title_activity_base">BaseActivity</string>
......
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="."/>
<external-path name="rc_external_path" path="."/>
<external-path path="Android/data/com.example.fcmapp/" name="files_root" />
<external-path name="name" path="."/>
<external-path name="external" path="."/>
<external-path path="." name="external_storage_root" />
</paths>
package com.polysoft.nafmii;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Example local unit test, which will execute on the development machine (host).
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
public class ExampleUnitTest {
@Test
public void addition_isCorrect() {
assertEquals(4, 2 + 2);
}
}
\ No newline at end of file \ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!