Commit d1d8b925 by 罗翻

android 混淆

parent d822891d
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' apply plugin: 'org.greenrobot.greendao'
android { android {
compileSdkVersion 25
buildToolsVersion '26.0.2'
aaptOptions {
cruncherEnabled = false
useNewCruncher = false
}
signingConfigs { signingConfigs {
release { release {
keyAlias 'keybigfish' keyAlias 'keybigfish'
...@@ -9,12 +16,6 @@ android { ...@@ -9,12 +16,6 @@ android {
storePassword '123456789' storePassword '123456789'
} }
} }
compileSdkVersion 25
buildToolsVersion '26.0.2'
aaptOptions {
cruncherEnabled = false
useNewCruncher = false
}
defaultConfig { defaultConfig {
applicationId "com.dayu.bigfish" applicationId "com.dayu.bigfish"
minSdkVersion 16 minSdkVersion 16
...@@ -24,7 +25,7 @@ android { ...@@ -24,7 +25,7 @@ android {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true multiDexEnabled true
} }
//Java8
compileOptions { compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8
...@@ -32,13 +33,15 @@ android { ...@@ -32,13 +33,15 @@ android {
buildTypes { buildTypes {
release { release {
signingConfig android.signingConfigs.release signingConfig android.signingConfigs.release
minifyEnabled false minifyEnabled true
shrinkResources true //是否清理无用资源,依赖于minifyEnabled
zipAlignEnabled true //是否启用zipAlign压缩
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
} }
debug { debug {
signingConfig android.signingConfigs.release signingConfig android.signingConfigs.release
minifyEnabled false minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
} }
} }
...@@ -84,8 +87,6 @@ dependencies { ...@@ -84,8 +87,6 @@ dependencies {
//注解工具 //注解工具
compile 'com.jakewharton:butterknife:8.1.0' compile 'com.jakewharton:butterknife:8.1.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.1.0' annotationProcessor 'com.jakewharton:butterknife-compiler:8.1.0'
//友盟统计
compile 'com.umeng.analytics:analytics:latest.integration'
//greendao数据库 //greendao数据库
compile 'org.greenrobot:greendao:3.2.0' compile 'org.greenrobot:greendao:3.2.0'
...@@ -101,6 +102,7 @@ dependencies { ...@@ -101,6 +102,7 @@ dependencies {
compile 'com.squareup.retrofit2:converter-gson:2.3.0' compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0' compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.8.0' compile 'com.squareup.okhttp3:logging-interceptor:3.8.0'
//jsbridge
compile 'com.github.lzyzsd:jsbridge:1.0.4' compile 'com.github.lzyzsd:jsbridge:1.0.4'
......
...@@ -23,6 +23,10 @@ ...@@ -23,6 +23,10 @@
# If you keep the line number information, uncomment this to # If you keep the line number information, uncomment this to
# hide the original source file name. # hide the original source file name.
#-renamesourcefileattribute SourceFile #-renamesourcefileattribute SourceFile
#----------------------------------------------------------------------------
#---------------------------------------------------------------------------------------------------
#-------------------------------------------基本不用动区域-------------------------------------------- #-------------------------------------------基本不用动区域--------------------------------------------
#---------------------------------基本指令区---------------------------------- #---------------------------------基本指令区----------------------------------
-optimizationpasses 5 -optimizationpasses 5
...@@ -33,14 +37,14 @@ ...@@ -33,14 +37,14 @@
-verbose -verbose
-printmapping proguardMapping.txt -printmapping proguardMapping.txt
-optimizations !code/simplification/cast,!field/*,!class/merging/* -optimizations !code/simplification/cast,!field/*,!class/merging/*
-keepattributes *Annotation*,InnerClasses -adaptclassstrings
-keepattributes Signature -keepattributes InnerClasses, EnclosingMethod, Signature, *Annotation*,Exceptions
-keepattributes SourceFile,LineNumberTable -keepattributes SourceFile,LineNumberTable
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
#---------------------------------默认保留区--------------------------------- #---------------------------------默认保留区---------------------------------
-keep public class * extends android.app.Activity -keep public class * extends android.app.Activity
-keep public class * extends android.app.Appliction -keep public class * extends android.app.Application
-keep public class * extends android.app.Service -keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider -keep public class * extends android.content.ContentProvider
...@@ -88,59 +92,52 @@ ...@@ -88,59 +92,52 @@
-keepclassmembers class * { -keepclassmembers class * {
void *(**On*Event); void *(**On*Event);
} }
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
#---------------------------------webview------------------------------------ #---------------------------------webview------------------------------------
-keepclassmembers class fqcn.of.javascript.interface.for.webview { -keepclassmembers class fqcn.of.javascript.interface.for.Webview {
public *; public *;
} }
-keepclassmembers class * extends android.webkit.webViewClient { -keepclassmembers class * extends android.webkit.WebViewClient {
public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap); public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
public boolean *(android.webkit.WebView, java.lang.String); public boolean *(android.webkit.WebView, java.lang.String);
} }
-keepclassmembers class * extends android.webkit.webViewClient { -keepclassmembers class * extends android.webkit.WebViewClient {
public void *(android.webkit.webView, jav.lang.String); public void *(android.webkit.WebView, jav.lang.String);
} }
#----------------------------------------------------------------------------
#-----------------AOP---------------------------------------------------------------------------------- #-------------------------------------------定制化区域----------------------------------------------
#---------------------------------1.实体类---------------------------------
-adaptclassstrings -keep class com.dayu.bigfish.bean.** { *; }
-keepattributes InnerClasses, EnclosingMethod, Signature, *Annotation* -keep class com.dayu.bigfish.base.** { *; }
#-------------------------------------------------------------------------
#---------------------------------2.第三方包-------------------------------
#retrofit #retrofit
-dontwarn okio.** -dontwarn okio.**
-dontwarn com.google.**
-dontwarn javax.annotation.** -dontwarn javax.annotation.**
-dontwarn javax.annotation.Nullable
-dontwarn javax.annotation.ParametersAreNonnullByDefault
-dontwarn okio.**
-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
-dontwarn javax.inject.**
# OkHttp3
-dontwarn okhttp3.logging.**
-keep class okhttp3.internal.**{*;}
############################################# #############################################
#PictureSelector 2.0
-keep class com.luck.picture.lib.** { *; }
-dontwarn com.yalantis.ucrop** # RxJava RxAndroid
-keep class com.yalantis.ucrop** { *; }
-keep interface com.yalantis.ucrop** { *; }
#rxjava
-dontwarn sun.misc.**
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
long producerIndex;
long consumerIndex;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
rx.internal.util.atomic.LinkedQueueNode producerNode;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
rx.internal.util.atomic.LinkedQueueNode consumerNode;
}
#rxandroid
-dontwarn sun.misc.** -dontwarn sun.misc.**
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* { -keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
long producerIndex; long producerIndex;
long consumerIndex; long consumerIndex;
} }
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef { -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
rx.internal.util.atomic.LinkedQueueNode producerNode; rx.internal.util.atomic.LinkedQueueNode producerNode;
...@@ -149,6 +146,20 @@ ...@@ -149,6 +146,20 @@
rx.internal.util.atomic.LinkedQueueNode consumerNode; rx.internal.util.atomic.LinkedQueueNode consumerNode;
} }
# Gson
-keep class com.google.gson.stream.** { *; }
-keepattributes EnclosingMethod
#PictureSelector 2.0
-keep class com.luck.picture.lib.** { *; }
-dontwarn com.yalantis.ucrop**
-keep class com.yalantis.ucrop** { *; }
-keep interface com.yalantis.ucrop** { *; }
#glide #glide
-keep public class * implements com.bumptech.glide.module.GlideModule -keep public class * implements com.bumptech.glide.module.GlideModule
-keep public class * extends com.bumptech.glide.AppGlideModule -keep public class * extends com.bumptech.glide.AppGlideModule
...@@ -180,10 +191,6 @@ public static java.lang.String TABLENAME; ...@@ -180,10 +191,6 @@ public static java.lang.String TABLENAME;
# If you do not use Rx: # If you do not use Rx:
-dontwarn rx.** -dontwarn rx.**
#xutils
-keep class * extends java.lang.annotation.Annotation { *; }
#环信 #环信
-keep class com.hyphenate.** {*;} -keep class com.hyphenate.** {*;}
-dontwarn com.hyphenate.** -dontwarn com.hyphenate.**
...@@ -194,4 +201,21 @@ public static java.lang.String TABLENAME; ...@@ -194,4 +201,21 @@ public static java.lang.String TABLENAME;
-keep class com.autonavi.aps.amapapi.model.**{*;} -keep class com.autonavi.aps.amapapi.model.**{*;}
#友盟 #友盟
-keep class com.umeng.commonsdk.** {*;} -keepclassmembers class * {
public <init> (org.json.JSONObject);
}
-keep public class com.dayu.bigfish.R$*{
public static final int *;
}
#---------------------------------3.与js互相调用的类------------------------
#---------------------------------4.反射相关的类和方法-----------------------
...@@ -21,6 +21,8 @@ ...@@ -21,6 +21,8 @@
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.access_network_state"/> <uses-permission android:name="android.permission.access_network_state"/>
<!--读取日志-->
<uses-permission android:name="android.permission.READ_LOGS"/>
<!--用于进行网络定位--> <!--用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
...@@ -37,18 +39,6 @@ ...@@ -37,18 +39,6 @@
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>
<!--7.0以上拍照适配-->
<!--<provider-->
<!--android:name="android.support.v4.content.FileProvider"-->
<!--android:authorities="com.dayu.bigfish.takephoto.fileprovider"-->
<!--android:exported="false"-->
<!--android:grantUriPermissions="true">-->
<!--<meta-data-->
<!--android:name="android.support.FILE_PROVIDER_PATHS"-->
<!--android:resource="@xml/file_paths"/>-->
<!--</provider>-->
<application <application
android:name=".MyApplication" android:name=".MyApplication"
android:allowBackup="true" android:allowBackup="true"
...@@ -80,7 +70,7 @@ ...@@ -80,7 +70,7 @@
<activity <activity
android:name=".SplashActivity" android:name=".SplashActivity"
android:screenOrientation="portrait" android:theme="@style/SplashTheme"
> >
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN"/> <action android:name="android.intent.action.MAIN"/>
...@@ -92,6 +82,7 @@ ...@@ -92,6 +82,7 @@
<meta-data <meta-data
android:name="UMENG_APPKEY" android:name="UMENG_APPKEY"
android:value="599a41697f2c743210000990"/> android:value="599a41697f2c743210000990"/>
<meta-data <meta-data
android:name="UMENG_CHANNEL" android:name="UMENG_CHANNEL"
android:value="Channel ID"/> android:value="Channel ID"/>
...@@ -126,6 +117,11 @@ ...@@ -126,6 +117,11 @@
</receiver> </receiver>
<activity <activity
android:name=".InitializeActivity"
android:screenOrientation="portrait"
/>
<activity
android:name=".ui.LoginActivity" android:name=".ui.LoginActivity"
android:screenOrientation="portrait" android:screenOrientation="portrait"
/> />
...@@ -147,8 +143,8 @@ ...@@ -147,8 +143,8 @@
/> />
<activity <activity
android:name=".ui.ProcessOrderActivity" android:name=".ui.ProcessOrderActivity"
android:screenOrientation="portrait"
android:launchMode="singleTask" android:launchMode="singleTask"
android:screenOrientation="portrait"
/> />
<activity <activity
android:name=".ui.PreviewActivty" android:name=".ui.PreviewActivty"
...@@ -180,6 +176,7 @@ ...@@ -180,6 +176,7 @@
/> />
<activity <activity
android:name=".ui.MainActivity" android:name=".ui.MainActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait" android:screenOrientation="portrait"
/> />
<activity <activity
......
...@@ -23,7 +23,7 @@ public class Constants { ...@@ -23,7 +23,7 @@ public class Constants {
public static final int DEBUGLEVEL = LogUtils.LEVEL_ALL; public static final int DEBUGLEVEL = LogUtils.LEVEL_ALL;
public static final String BASE_URL = "http://47.94.101.239:3112"; public static final String BASE_URL = "http://47.94.101.239:3112";
public final static String UP_PHOTO = "/file/uploadMore?targetPath=test/sp/mobile/android/business/checkApply"; public final static String UP_PHOTO = "/file/uploadMore?targetPath=test/sp/mobile/android/business/checkApply";
public final static String WEB_SOP = "http://192.168.1.117:8080/#/sop"; public final static String WEB_SOP = "http://47.94.101.239:9004/#/sop";
/**************************正式环境*******************************/ /**************************正式环境*******************************/
// public static final int DEBUGLEVEL = LogUtils.LEVEL_OFF; // public static final int DEBUGLEVEL = LogUtils.LEVEL_OFF;
......
package com.dayu.bigfish;
import android.Manifest;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Toast;
import com.dayu.bigfish.ui.LoginActivity;
import com.dayu.bigfish.ui.MainActivity;
import com.dayu.bigfish.ui.views.CustomDialog;
import com.dayu.bigfish.utils.managers.UserManager;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
public class InitializeActivity extends AppCompatActivity {
private static final int SDK_PERMISSION_REQUEST = 1;
private Activity mActivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
mActivity = this;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//判断当前系统的SDK版本是否大于23
if (!(checkSelfPermission(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED)
|| !(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)
|| !(checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED)) {
requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE, Manifest.permission.WRITE_EXTERNAL_STORAGE
, Manifest.permission.ACCESS_COARSE_LOCATION}, SDK_PERMISSION_REQUEST);
}
}
}
@Override
protected void onResume() {
super.onResume();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//判断当前系统的SDK版本是否大于23
if ((checkSelfPermission(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED)
&& (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)
&& (checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED)) {
doJump();
}
} else {
doJump();
}
}
/*权限回调*/
@TargetApi(23)
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
boolean flag = true;
if (requestCode == SDK_PERMISSION_REQUEST) {
for (int grant : grantResults) {
if (grant != PackageManager.PERMISSION_GRANTED) {
flag = false;
}
}
if (!flag) {
CustomDialog dialog = new CustomDialog(mActivity, R.style.custom_dialog2, getString(R.string.please_open__permission)
, new CustomDialog.OnCloseListener() {
@Override
public void onClick(Dialog dialog, boolean confirm) {
if (confirm) {
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(Uri.parse("package:" + getPackageName())); // 根据包名打开对应的设置界面
startActivity(intent);
dialog.dismiss();
} else {
Toast.makeText(mActivity, getString(R.string.no_permission), Toast.LENGTH_SHORT).show();
finish();
dialog.dismiss();
}
}
});
dialog.setTitle(getString(R.string.notice))
.setNegativeButton(getString(R.string.cancle))
.setPositiveButton(getString(R.string.go_setting));
dialog.show();
return;
}
}
}
private void doJump() {
Intent intent;
if (UserManager.getInstance().hasUserInfo(this)) {
intent = new Intent(InitializeActivity.this, MainActivity.class);
} else {
intent = new Intent(InitializeActivity.this, LoginActivity.class);
}
Observable.timer(2000, TimeUnit.MICROSECONDS).subscribe(
aLong -> {
startActivity(intent);
finish();
}
);
}
@Override
protected void onPause() {
super.onPause();
}
}
package com.dayu.bigfish; package com.dayu.bigfish;
import android.app.ActivityManager;
import android.content.Context; import android.content.Context;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
...@@ -12,11 +11,10 @@ import android.support.multidex.MultiDexApplication; ...@@ -12,11 +11,10 @@ import android.support.multidex.MultiDexApplication;
import com.dayu.bigfish.greendao.GreenDaoManager; import com.dayu.bigfish.greendao.GreenDaoManager;
import com.dayu.bigfish.utils.LocationUtils; import com.dayu.bigfish.utils.LocationUtils;
import com.dayu.bigfish.utils.NetworkConnectChangedReceiver; import com.dayu.bigfish.utils.NetworkConnectChangedReceiver;
import com.hyphenate.chat.EMClient; import com.dayu.bigfish.utils.managers.HxManager;
import com.hyphenate.chat.EMOptions; import com.umeng.analytics.MobclickAgent;
import com.umeng.analytics.MobclickAgent.EScenarioType;
import java.util.Iterator; import com.umeng.commonsdk.UMConfigure;
import java.util.List;
/** /**
* 全局的相关配置 * 全局的相关配置
...@@ -28,8 +26,6 @@ public class MyApplication extends MultiDexApplication { ...@@ -28,8 +26,6 @@ public class MyApplication extends MultiDexApplication {
private static Context mContext; private static Context mContext;
private static Handler mHandler; private static Handler mHandler;
private static int mMainThreadId; private static int mMainThreadId;
// 记录环信是否已经初始化
private boolean isInit = false;
/** /**
* 程序的入口方法 * 程序的入口方法
...@@ -42,7 +38,6 @@ public class MyApplication extends MultiDexApplication { ...@@ -42,7 +38,6 @@ public class MyApplication extends MultiDexApplication {
filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(new NetworkConnectChangedReceiver(), filter); registerReceiver(new NetworkConnectChangedReceiver(), filter);
MultiDex.install(this);
//上下文 //上下文
mContext = getApplicationContext(); mContext = getApplicationContext();
// 主线程的Handler // 主线程的Handler
...@@ -51,69 +46,24 @@ public class MyApplication extends MultiDexApplication { ...@@ -51,69 +46,24 @@ public class MyApplication extends MultiDexApplication {
mMainThreadId = android.os.Process.myTid(); mMainThreadId = android.os.Process.myTid();
//初始化greendao //初始化greendao
GreenDaoManager.getInstance(); GreenDaoManager.getInstance();
// 初始化环信SDK
EMOptions options = new EMOptions();
options.setAutoLogin(true);
//初始化
EMClient.getInstance().init(getContext(), options);
//在做打包混淆时,关闭debug模式,避免消耗不必要的资源
EMClient.getInstance().setDebugMode(true);
initEasemob();
//初始化高德地图 //初始化高德地图
LocationUtils.init(getApplicationContext()); LocationUtils.init(getApplicationContext());
//初始化友盟
initUM();
//初始化环信
HxManager.getInstance().init(mContext);
MultiDex.install(this);
} }
private void initUM() {
private void initEasemob() { MobclickAgent.setDebugMode(true);
// 获取当前进程 id 并取得进程名 UMConfigure.init(this, UMConfigure.DEVICE_TYPE_PHONE, null);
int pid = android.os.Process.myPid(); UMConfigure.setLogEnabled(true);
String processAppName = getAppName(pid); UMConfigure.setEncryptEnabled(true);
/** MobclickAgent.setScenarioType(mContext, EScenarioType.E_UM_NORMAL);
* 如果app启用了远程的service,此application:onCreate会被调用2次
* 为了防止环信SDK被初始化2次,加此判断会保证SDK被初始化1次
* 默认的app会在以包名为默认的process name下运行,如果查到的process
* name不是app的process name就立即返回
*/
if (processAppName == null || !processAppName.equalsIgnoreCase(this.getPackageName())) {
// 则此application的onCreate 是被service 调用的,直接返回
return;
}
if (isInit) {
return;
}
} }
/**
* 根据Pid获取当前进程的名字,一般就是当前app的包名
*
* @param pid 进程的id
* @return 返回进程的名字
*/
private String getAppName(int pid) {
String processName = null;
ActivityManager activityManager = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
List list = activityManager.getRunningAppProcesses();
Iterator i = list.iterator();
while (i.hasNext()) {
ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo) (i.next());
try {
if (info.pid == pid) {
// 根据进程的信息获取当前进程的名字
processName = info.processName;
// 返回当前进程名
return processName;
}
} catch (Exception e) {
e.printStackTrace();
}
}
// 没有匹配的项,返回为null
return null;
}
/**
* 得到全局上下文,慎用
*/
public static Context getContext() { public static Context getContext() {
return mContext; return mContext;
} }
......
...@@ -19,7 +19,6 @@ import io.reactivex.ObservableOnSubscribe; ...@@ -19,7 +19,6 @@ import io.reactivex.ObservableOnSubscribe;
import io.reactivex.ObservableSource; import io.reactivex.ObservableSource;
import io.reactivex.ObservableTransformer; import io.reactivex.ObservableTransformer;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
import okhttp3.Interceptor; import okhttp3.Interceptor;
import okhttp3.OkHttpClient; import okhttp3.OkHttpClient;
...@@ -128,7 +127,6 @@ public class Api { ...@@ -128,7 +127,6 @@ public class Api {
} }
} else { } else {
if (!e.isDisposed()) { if (!e.isDisposed()) {
Log.d("request+errorMessag:", response.getMsg());
e.onError(new ServerException(response.getCode(), response.getMsg())); e.onError(new ServerException(response.getCode(), response.getMsg()));
} }
return; return;
...@@ -170,7 +168,7 @@ public class Api { ...@@ -170,7 +168,7 @@ public class Api {
public ObservableSource apply(Observable upstream) { public ObservableSource apply(Observable upstream) {
return upstream.subscribeOn(Schedulers.io()) return upstream.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.flatMap((Function) (response) -> flatResponse((BaseResponse<Object>) response)); .flatMap((response) -> flatResponse((BaseResponse<Object>) response));
} }
}; };
......
...@@ -3,6 +3,7 @@ package com.dayu.bigfish.base; ...@@ -3,6 +3,7 @@ package com.dayu.bigfish.base;
import android.app.Activity; import android.app.Activity;
import android.app.Dialog; import android.app.Dialog;
import android.content.Intent; import android.content.Intent;
import android.util.Log;
import com.dayu.bigfish.R; import com.dayu.bigfish.R;
import com.dayu.bigfish.api.APIException; import com.dayu.bigfish.api.APIException;
...@@ -105,6 +106,7 @@ public abstract class BasePresenter<V> { ...@@ -105,6 +106,7 @@ public abstract class BasePresenter<V> {
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
Log.d("reguest+error", e.toString());
ProgressUtil.stopLoad(); ProgressUtil.stopLoad();
processException(e); processException(e);
try { try {
......
package com.dayu.bigfish.presenter.login; package com.dayu.bigfish.presenter.login;
import android.util.Log;
import com.app.annotation.apt.InstanceFactory; import com.app.annotation.apt.InstanceFactory;
import com.apt.ApiFactory; import com.apt.ApiFactory;
import com.dayu.bigfish.bean.UserInfo; import com.dayu.bigfish.bean.UserInfo;
...@@ -14,7 +16,6 @@ import io.reactivex.functions.Consumer; ...@@ -14,7 +16,6 @@ import io.reactivex.functions.Consumer;
public class LoginPresenter extends LoginContract.Presenter { public class LoginPresenter extends LoginContract.Presenter {
@Override @Override
public void sendRegister(String userPhone, int type) { public void sendRegister(String userPhone, int type) {
ApiFactory.sendCode(userPhone, type).subscribe(baseObserver(new Consumer<Boolean>() { ApiFactory.sendCode(userPhone, type).subscribe(baseObserver(new Consumer<Boolean>() {
...@@ -28,17 +29,6 @@ public class LoginPresenter extends LoginContract.Presenter { ...@@ -28,17 +29,6 @@ public class LoginPresenter extends LoginContract.Presenter {
mView.sendRegisterFail(throwable); mView.sendRegisterFail(throwable);
} }
})); }));
// mModel.sendRegister(userPhone, type).subscribe(baseObserver(new Consumer<Boolean>() {
// @Override
// public void accept(Boolean aBoolean) throws Exception {
// mView.sendRegisterSuccess(aBoolean);
// }
// }, new Consumer<Throwable>() {
// @Override
// public void accept(Throwable throwable) throws Exception {
// mView.sendRegisterFail(throwable);
// }
// }));
} }
@Override @Override
...@@ -51,20 +41,10 @@ public class LoginPresenter extends LoginContract.Presenter { ...@@ -51,20 +41,10 @@ public class LoginPresenter extends LoginContract.Presenter {
}, new Consumer<Throwable>() { }, new Consumer<Throwable>() {
@Override @Override
public void accept(Throwable throwable) throws Exception { public void accept(Throwable throwable) throws Exception {
Log.d("request", throwable.toString());
mView.loginFail(throwable); mView.loginFail(throwable);
} }
})); }));
// mModel.login(userPhone, register).subscribe(baseObserver(new Consumer<UserInfo>() {
// @Override
// public void accept(UserInfo info) throws Exception {
// mView.loginSuccess(info);
// }
// }, new Consumer<Throwable>() {
// @Override
// public void accept(Throwable throwable) throws Exception {
// mView.loginFail(throwable);
// }
// }));
} }
@Override @Override
......
...@@ -11,14 +11,14 @@ import android.widget.TextView; ...@@ -11,14 +11,14 @@ import android.widget.TextView;
import com.dayu.bigfish.R; import com.dayu.bigfish.R;
import com.dayu.bigfish.base.BaseActivity; import com.dayu.bigfish.base.BaseActivity;
import com.dayu.bigfish.bean.UserInfo; import com.dayu.bigfish.bean.UserInfo;
import com.dayu.bigfish.utils.managers.UserManager;
import com.dayu.bigfish.presenter.login.LoginContract; import com.dayu.bigfish.presenter.login.LoginContract;
import com.dayu.bigfish.presenter.login.LoginPresenter; import com.dayu.bigfish.presenter.login.LoginPresenter;
import com.dayu.bigfish.ui.views.ClearEditText;
import com.dayu.bigfish.utils.ProgressUtil; import com.dayu.bigfish.utils.ProgressUtil;
import com.dayu.bigfish.utils.TimeCountUtil; import com.dayu.bigfish.utils.TimeCountUtil;
import com.dayu.bigfish.utils.ToastUtils; import com.dayu.bigfish.utils.ToastUtils;
import com.dayu.bigfish.utils.UtilsUserAccountMatcher; import com.dayu.bigfish.utils.UtilsUserAccountMatcher;
import com.dayu.bigfish.ui.views.ClearEditText; import com.dayu.bigfish.utils.managers.UserManager;
import com.hyphenate.EMCallBack; import com.hyphenate.EMCallBack;
import com.hyphenate.chat.EMClient; import com.hyphenate.chat.EMClient;
...@@ -57,6 +57,7 @@ public class LoginActivity extends BaseActivity<LoginPresenter> implements Login ...@@ -57,6 +57,7 @@ public class LoginActivity extends BaseActivity<LoginPresenter> implements Login
public void loginSuccess(UserInfo info) { public void loginSuccess(UserInfo info) {
hxUserId = info.getHxAccount(); hxUserId = info.getHxAccount();
hxUserPwd = info.getHxPwd(); hxUserPwd = info.getHxPwd();
UserManager.getInstance().saveUserInfo(this, info); UserManager.getInstance().saveUserInfo(this, info);
if (!(TextUtils.isEmpty(hxUserId)) && !(TextUtils.isEmpty(hxUserPwd))) { if (!(TextUtils.isEmpty(hxUserId)) && !(TextUtils.isEmpty(hxUserPwd))) {
EMClient.getInstance().login(hxUserId, hxUserPwd, new EMCallBack() { EMClient.getInstance().login(hxUserId, hxUserPwd, new EMCallBack() {
...@@ -83,6 +84,7 @@ public class LoginActivity extends BaseActivity<LoginPresenter> implements Login ...@@ -83,6 +84,7 @@ public class LoginActivity extends BaseActivity<LoginPresenter> implements Login
@Override @Override
public void loginFail(Throwable throwable) { public void loginFail(Throwable throwable) {
ToastUtils.showShortToast(throwable.toString());
ToastUtils.showShortToast("登录失败"); ToastUtils.showShortToast("登录失败");
} }
......
...@@ -36,6 +36,7 @@ import com.dayu.bigfish.utils.GetUserInfo; ...@@ -36,6 +36,7 @@ import com.dayu.bigfish.utils.GetUserInfo;
import com.dayu.bigfish.utils.LocationUtils; import com.dayu.bigfish.utils.LocationUtils;
import com.dayu.bigfish.utils.SPUtils; import com.dayu.bigfish.utils.SPUtils;
import com.dayu.bigfish.utils.ToastUtils; import com.dayu.bigfish.utils.ToastUtils;
import com.umeng.analytics.MobclickAgent;
import java.io.File; import java.io.File;
...@@ -66,7 +67,6 @@ public class MainActivity extends BaseActivity<MainPresenter> implements MainCon ...@@ -66,7 +67,6 @@ public class MainActivity extends BaseActivity<MainPresenter> implements MainCon
private Fragment[] mFragments; private Fragment[] mFragments;
private int mAccountId; private int mAccountId;
private int mSiteId; private int mSiteId;
private int mReceivingNum;
@Override @Override
public int getLayoutId() { public int getLayoutId() {
...@@ -115,6 +115,15 @@ public class MainActivity extends BaseActivity<MainPresenter> implements MainCon ...@@ -115,6 +115,15 @@ public class MainActivity extends BaseActivity<MainPresenter> implements MainCon
@Override @Override
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
MobclickAgent.onResume(this);
MobclickAgent.onPageStart("main");
}
@Override
protected void onPause() {
super.onPause();
MobclickAgent.onPause(this);
MobclickAgent.onPageEnd("main");
} }
@OnClick({R.id.tab_first, R.id.tab_second, R.id.tab_third, R.id.tab_four, R.id.tab_get_order}) @OnClick({R.id.tab_first, R.id.tab_second, R.id.tab_third, R.id.tab_four, R.id.tab_get_order})
...@@ -206,7 +215,6 @@ public class MainActivity extends BaseActivity<MainPresenter> implements MainCon ...@@ -206,7 +215,6 @@ public class MainActivity extends BaseActivity<MainPresenter> implements MainCon
@Override @Override
public void getReceiveOrderSuccess(BasePageBean<Order> orders) { public void getReceiveOrderSuccess(BasePageBean<Order> orders) {
mReceivingNum = orders.getTotalRows();
mGetOrderTv.setText(orders.getTotalRows() + ""); mGetOrderTv.setText(orders.getTotalRows() + "");
} }
...@@ -261,7 +269,6 @@ public class MainActivity extends BaseActivity<MainPresenter> implements MainCon ...@@ -261,7 +269,6 @@ public class MainActivity extends BaseActivity<MainPresenter> implements MainCon
dialog.show(); dialog.show();
} }
@Override @Override
protected void onDestroy() { protected void onDestroy() {
super.onDestroy(); super.onDestroy();
......
...@@ -12,12 +12,12 @@ import android.webkit.WebChromeClient; ...@@ -12,12 +12,12 @@ import android.webkit.WebChromeClient;
import android.webkit.WebSettings; import android.webkit.WebSettings;
import android.webkit.WebView; import android.webkit.WebView;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.ProgressBar;
import com.dayu.bigfish.Constants; import com.dayu.bigfish.Constants;
import com.dayu.bigfish.R; import com.dayu.bigfish.R;
import com.dayu.bigfish.bean.event.OrderState; import com.dayu.bigfish.bean.event.OrderState;
import com.dayu.bigfish.bean.event.RxBus; import com.dayu.bigfish.bean.event.RxBus;
import com.dayu.bigfish.utils.GetUserInfo;
import com.github.lzyzsd.jsbridge.BridgeHandler; import com.github.lzyzsd.jsbridge.BridgeHandler;
import com.github.lzyzsd.jsbridge.BridgeWebView; import com.github.lzyzsd.jsbridge.BridgeWebView;
import com.github.lzyzsd.jsbridge.CallBackFunction; import com.github.lzyzsd.jsbridge.CallBackFunction;
...@@ -42,11 +42,11 @@ public class SopWebViewActivity extends AppCompatActivity { ...@@ -42,11 +42,11 @@ public class SopWebViewActivity extends AppCompatActivity {
private String mToken; private String mToken;
private int mOrderId; private int mOrderId;
private int mPositon; private int mPositon;
private ProgressBar pb;
ValueCallback<Uri> mUploadMessage; ValueCallback<Uri> mUploadMessage;
ValueCallback<Uri[]> uploadMessageAboveL; ValueCallback<Uri[]> uploadMessageAboveL;
int RESULT_CODE = 0; int RESULT_CODE = 0;
int RESULT_CODE_FOR_Lollipop = 1; int RESULT_CODE_FOR_Lollipop = 1;
private SopWebViewActivity mActivity;
@Override @Override
...@@ -54,7 +54,8 @@ public class SopWebViewActivity extends AppCompatActivity { ...@@ -54,7 +54,8 @@ public class SopWebViewActivity extends AppCompatActivity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_webview_layout); this.setContentView(R.layout.activity_webview_layout);
ButterKnife.bind(this); ButterKnife.bind(this);
mToken = getIntent().getStringExtra(Constants.TOKEN); mActivity = this;
mToken = GetUserInfo.getToken(mActivity);
mOrderId = getIntent().getIntExtra(Constants.ORDER_ID, 0); mOrderId = getIntent().getIntExtra(Constants.ORDER_ID, 0);
mPositon = getIntent().getIntExtra(Constants.ORDER_POSTION, 0); mPositon = getIntent().getIntExtra(Constants.ORDER_POSTION, 0);
mBackTitle.setOnClickListener(o -> finish()); mBackTitle.setOnClickListener(o -> finish());
...@@ -118,10 +119,6 @@ public class SopWebViewActivity extends AppCompatActivity { ...@@ -118,10 +119,6 @@ public class SopWebViewActivity extends AppCompatActivity {
@Override @Override
public void onProgressChanged(WebView view, int newProgress) { public void onProgressChanged(WebView view, int newProgress) {
// pb.setProgress(newProgress);
// if (newProgress >= 100) {
// pb.setVisibility(View.GONE);
// }
} }
}); });
...@@ -142,7 +139,7 @@ public class SopWebViewActivity extends AppCompatActivity { ...@@ -142,7 +139,7 @@ public class SopWebViewActivity extends AppCompatActivity {
public void handler(String data, CallBackFunction function) { public void handler(String data, CallBackFunction function) {
if ("1".equals(data)) { if ("1".equals(data)) {
RxBus.getDefault().post(new OrderState(ORDER_SOP_FINISH, mPositon)); RxBus.getDefault().post(new OrderState(ORDER_SOP_FINISH, mPositon));
Intent intent = new Intent(SopWebViewActivity.this, ProcessOrderActivity.class); Intent intent = new Intent(mActivity, ProcessOrderActivity.class);
intent.putExtra(Constants.ORDER_ID, mOrderId); intent.putExtra(Constants.ORDER_ID, mOrderId);
intent.putExtra(Constants.ORDER_POSTION, mPositon); intent.putExtra(Constants.ORDER_POSTION, mPositon);
startActivity(intent); startActivity(intent);
......
...@@ -228,45 +228,47 @@ public class OrderDoingAdapter extends BaseQuickAdapter<Order, BaseViewHolder> { ...@@ -228,45 +228,47 @@ public class OrderDoingAdapter extends BaseQuickAdapter<Order, BaseViewHolder> {
if (mItem.getStatus() == 4) { if (mItem.getStatus() == 4) {
return; return;
} }
ProgressUtil.startLoad(mContext); if (mItem.getStatus() == 3) {
LocationUtils.getCurrentLocation(new LocationUtils.MyLocationListener() { ProgressUtil.startLoad(mContext);
@Override LocationUtils.getCurrentLocation(new LocationUtils.MyLocationListener() {
public void result(AMapLocation location) { @Override
double latitude = 0; public void result(AMapLocation location) {
double longitude = 0; double latitude = 0;
if (location != null) { double longitude = 0;
latitude = location.getLatitude(); if (location != null) {
longitude = location.getLongitude(); latitude = location.getLatitude();
} longitude = location.getLongitude();
if (mItem.getStatus() == 3 && mItem.getSubStatus() == 1) { }
mPresenter.startOrder(mItem.getId(), latitude, longitude) if (mItem.getSubStatus() == 1) {
.observeOn(AndroidSchedulers.mainThread()) mPresenter.startOrder(mItem.getId(), latitude, longitude)
.subscribe(mPresenter.baseObserver(new Consumer<Integer>() { .observeOn(AndroidSchedulers.mainThread())
@Override .subscribe(mPresenter.baseObserver(new Consumer<Integer>() {
public void accept(Integer integer) throws Exception { @Override
LocationUtils.stop(); public void accept(Integer integer) throws Exception {
ProgressUtil.stopLoad(); LocationUtils.stop();
mItem.setSubStatus(2); ProgressUtil.stopLoad();
mHolder.setText(R.id.tv_item_process, "开始服务"); mItem.setSubStatus(2);
} mHolder.setText(R.id.tv_item_process, "开始服务");
})); }
} else if (mItem.getStatus() == 3 && mItem.getSubStatus() == 2) { }));
mPresenter.startServer(mItem.getId(), latitude, longitude) } else if (mItem.getSubStatus() == 2) {
.observeOn(AndroidSchedulers.mainThread()) mPresenter.startServer(mItem.getId(), latitude, longitude)
.subscribe(mPresenter.baseObserver(new Consumer<Integer>() { .observeOn(AndroidSchedulers.mainThread())
@Override .subscribe(mPresenter.baseObserver(new Consumer<Integer>() {
public void accept(Integer integer) throws Exception { @Override
LocationUtils.stop(); public void accept(Integer integer) throws Exception {
ProgressUtil.stopLoad(); LocationUtils.stop();
mItem.setStatus(4); ProgressUtil.stopLoad();
mItem.setSubStatus(integer); mItem.setStatus(4);
mHolder.setText(R.id.tv_item_process, "处理工单"); mItem.setSubStatus(integer);
mHolder.setText(R.id.item_updata_time, "需要再次上门"); mHolder.setText(R.id.tv_item_process, "处理工单");
} mHolder.setText(R.id.item_updata_time, "需要再次上门");
})); }
}));
}
} }
} });
}); }
} }
......
...@@ -40,7 +40,7 @@ public class BigFishMessageFragment extends BaseFragment<SysMessagePresenter> im ...@@ -40,7 +40,7 @@ public class BigFishMessageFragment extends BaseFragment<SysMessagePresenter> im
public View initView(View view) { public View initView(View view) {
hxUserId = GetUserInfo.getHxUserId(mActivity); hxUserId = GetUserInfo.getHxUserId(mActivity);
ProgressUtil.startLoad(mActivity); ProgressUtil.startLoad(mActivity);
mPresenter.getHxMessage(hxUserId, 1, mPage, mPageSize); mPresenter.getHxMessage(hxUserId, 2, mPage, mPageSize);
mAdapter = new SystemMessageAdapter(R.layout.message_adapter); mAdapter = new SystemMessageAdapter(R.layout.message_adapter);
mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext())); mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
mRecyclerView.setAdapter(mAdapter); mRecyclerView.setAdapter(mAdapter);
......
package com.dayu.bigfish.utils.managers;
import android.app.ActivityManager;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
import com.dayu.bigfish.Constants;
import com.dayu.bigfish.R;
import com.dayu.bigfish.bean.InformBean;
import com.dayu.bigfish.bean.event.RefreReceiveData;
import com.dayu.bigfish.bean.event.RefreshTab;
import com.dayu.bigfish.bean.event.RxBus;
import com.dayu.bigfish.ui.MainActivity;
import com.google.gson.Gson;
import com.hyphenate.EMMessageListener;
import com.hyphenate.chat.EMClient;
import com.hyphenate.chat.EMMessage;
import com.hyphenate.chat.EMOptions;
import java.util.Iterator;
import java.util.List;
/**
* Created by luofan on 2017/12/1.
*/
public class HxManager {
private static HxManager instance;
private boolean sdkInited = false;
private Context mContext;
private HxManager() {
}
/**
* @return
*/
public synchronized static HxManager getInstance() {
if (instance == null) {
instance = new HxManager();
}
return instance;
}
public synchronized boolean init(Context context) {
mContext = context;
if (sdkInited) {
return true;
}
EMOptions options = new EMOptions();
options.setAutoLogin(true);
//初始化
EMClient.getInstance().init(context, options);
//在做打包混淆时,关闭debug模式,避免消耗不必要的资源
EMClient.getInstance().setDebugMode(true);
initEasemob();
initEM();
sdkInited = true;
return true;
}
private void initEM() {
//注册监听事件
EMMessageListener msgListener = new EMMessageListener() {
@Override
public void onMessageReceived(List<EMMessage> messages) {
//收到消息
for (EMMessage list : messages) {
//异步刷新各Tab状态数量
RxBus.getDefault().post(new RefreshTab(0));
//打开消息列表界面
Intent intent = new Intent(mContext, MainActivity.class);
intent.putExtra(Constants.DUMP_INDEX, 3);
PendingIntent pi = PendingIntent.getActivity(mContext,
0, intent, 0);
String str = list.getBody().toString();
Gson gson = new Gson();
InformBean info = gson.fromJson(list.ext().toString(), InformBean.class);
String title = "";
if (info.getCategory() == 1) {
title = "系统通知";
} else if (info.getCategory() == 2) {
title = "大于通知";
}
NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder builder = new NotificationCompat.Builder(mContext);
// 设置打开通知,该通知取消
builder.setAutoCancel(true)
// 设置通知提示信息
.setTicker(info.getTitle())
// 设置通知的图标
.setSmallIcon(R.mipmap.logo)
// 设置通知的标题
.setContentTitle(title)
// 设置通知的内容
.setContentText(str)
// 设置使用系统默认的声音、LED
.setDefaults(
Notification.DEFAULT_LIGHTS
| Notification.DEFAULT_SOUND)
// 设置通知发布时间
.setWhen(System.currentTimeMillis())
// 设置将要启动的活动
.setContentIntent(pi)
.build();
notificationManager.notify(0, builder.build());
}
}
@Override
public void onCmdMessageReceived(List<EMMessage> messages) {
//收到透传消息
for (EMMessage list : messages) {
RxBus.getDefault().post(new RefreReceiveData(0));
}
}
@Override
public void onMessageRead(List<EMMessage> messages) {
//收到已读回执
}
@Override
public void onMessageDelivered(List<EMMessage> message) {
//收到已送达回执
}
@Override
public void onMessageRecalled(List<EMMessage> messages) {
//消息被撤回
}
@Override
public void onMessageChanged(EMMessage message, Object change) {
//消息状态变动
}
};
//注册环信消息监听
EMClient.getInstance().chatManager().addMessageListener(msgListener);
}
private void initEasemob() {
// 获取当前进程 id 并取得进程名
int pid = android.os.Process.myPid();
String processAppName = getAppName(pid);
/**
* 如果app启用了远程的service,此application:onCreate会被调用2次
* 为了防止环信SDK被初始化2次,加此判断会保证SDK被初始化1次
* 默认的app会在以包名为默认的process name下运行,如果查到的process
* name不是app的process name就立即返回
*/
if (processAppName == null || !processAppName.equalsIgnoreCase(mContext.getPackageName())) {
// 则此application的onCreate 是被service 调用的,直接返回
return;
}
if (sdkInited) {
return;
}
}
/**
* 根据Pid获取当前进程的名字,一般就是当前app的包名
*
* @param pid 进程的id
* @return 返回进程的名字
*/
private String getAppName(int pid) {
String processName = null;
ActivityManager activityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
List list = activityManager.getRunningAppProcesses();
Iterator i = list.iterator();
while (i.hasNext()) {
ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo) (i.next());
try {
if (info.pid == pid) {
// 根据进程的信息获取当前进程的名字
processName = info.processName;
// 返回当前进程名
return processName;
}
} catch (Exception e) {
e.printStackTrace();
}
}
// 没有匹配的项,返回为null
return null;
}
}
...@@ -9,11 +9,10 @@ ...@@ -9,11 +9,10 @@
<ImageView <ImageView
android:id="@+id/start_pager_image" android:id="@+id/start_pager_image"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:layout_marginTop="148dp" android:background="@mipmap/bg_splash"
android:background="@mipmap/logo"
/> />
<TextView <TextView
...@@ -26,5 +25,6 @@ ...@@ -26,5 +25,6 @@
android:text="@string/tv_start_page_text" android:text="@string/tv_start_page_text"
android:textColor="#8a8a8a" android:textColor="#8a8a8a"
android:textSize="@dimen/sp_1" android:textSize="@dimen/sp_1"
android:visibility="gone"
/> />
</RelativeLayout> </RelativeLayout>
File mode changed from 100755 to 100644
...@@ -498,7 +498,7 @@ ...@@ -498,7 +498,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@id/line_three" android:layout_below="@id/line_three"
android:visibility="visible" android:visibility="gone"
> >
<TextView <TextView
......
...@@ -117,7 +117,7 @@ ...@@ -117,7 +117,7 @@
<string name="no_permission">没有此权限将无法使用本app,请在设置中打开权限!</string> <string name="no_permission">没有此权限将无法使用本app,请在设置中打开权限!</string>
<string name="login_state_no">登录状态已失效,请重新登录!</string> <string name="login_state_no">登录状态已失效,请重新登录!</string>
<string name="login_again">重新登录</string> <string name="login_again">重新登录</string>
<string name="please_open__permission">请您打开权限再使用\n设置路径:设置->应用->大鱼师傅->权限</string> <string name="please_open__permission">没有此权限</string>
<string name="cancle">取消</string> <string name="cancle">取消</string>
<string name="go_setting">前往设置</string> <string name="go_setting">前往设置</string>
<string name="login_agreement">登录即表示同意此</string> <string name="login_agreement">登录即表示同意此</string>
......
...@@ -8,6 +8,14 @@ ...@@ -8,6 +8,14 @@
<item name="colorAccent">@color/cl_accent</item> <item name="colorAccent">@color/cl_accent</item>
</style> </style>
<style name="SplashTheme" parent="AppTheme">
<item name="android:windowBackground">@mipmap/bg_splash</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="Transparent" parent="AppTheme"> <style name="Transparent" parent="AppTheme">
<item name="android:windowIsTranslucent">true</item> <item name="android:windowIsTranslucent">true</item>
</style> </style>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment