diff --git a/app/build.gradle b/app/build.gradle index d2159d8..48e38ea 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -17,8 +17,8 @@ android { minSdkVersion 26 targetSdkVersion 29 - versionCode 48 - versionName "1.5.6" + versionCode 1 + versionName "1.0.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -124,9 +124,54 @@ android { v1SigningEnabled true v2SigningEnabled true } + + U807 { + storeFile file("keystore/AllwinnerU807.jks") + storePassword "123456" + keyAlias "u807" + keyPassword "123456" + v2SigningEnabled false + } + + iPlay50P { + storeFile file("keystore/iPlay50P.jks") + storePassword "123456" + keyAlias "iplay50p" + keyPassword "123456" + v1SigningEnabled true + v2SigningEnabled true + } } buildTypes { + iPlay50PDebug.initWith(debug) + iPlay50PDebug { + buildConfigField "String", "platform", '"T1102"' + versionNameSuffix "-debug" + debuggable true + signingConfig signingConfigs.iPlay50P + } + + iPlay50PRelease.initWith(release) + iPlay50PRelease { + buildConfigField "String", "platform", '"T1102"' + signingConfig signingConfigs.iPlay50P + } + + U807Debug.initWith(debug) + U807Debug { + buildConfigField "String", "platform", '"U807"' + versionNameSuffix "-debug" + debuggable true + signingConfig signingConfigs.U807 + } + + U807Release.initWith(release) + U807Release { + buildConfigField "String", "platform", '"U807"' + signingConfig signingConfigs.U807 + } + Cube8183Debug.initWith(debug) Cube8183Debug { debuggable true @@ -307,6 +352,8 @@ android { } sourceSets { + iPlay50PDebug { manifest.srcFile 'src/debug/AndroidManifest.xml' } + U807Debug { manifest.srcFile 'src/debug/AndroidManifest.xml' } Cube8183Debug { manifest.srcFile 'src/debug/AndroidManifest.xml' } Teclast8183Debug { manifest.srcFile 'src/debug/AndroidManifest.xml' } Teclast8515Debug { manifest.srcFile 'src/debug/AndroidManifest.xml' } @@ -318,6 +365,8 @@ android { zhanRuiDebug { manifest.srcFile 'src/debug/AndroidManifest.xml' } debug { manifest.srcFile 'src/debug/AndroidManifest.xml' } + iPlay50PRelease { manifest.srcFile 'src/main/AndroidManifest.xml' } + U807Release { manifest.srcFile 'src/main/AndroidManifest.xml' } Cube8183Release { manifest.srcFile 'src/main/AndroidManifest.xml' } Teclast8183Release { manifest.srcFile 'src/main/AndroidManifest.xml' } Teclast8515Release { manifest.srcFile 'src/main/AndroidManifest.xml' } diff --git a/app/keystore/AllwinnerU807.jks b/app/keystore/AllwinnerU807.jks new file mode 100644 index 0000000..c8d68c5 Binary files /dev/null and b/app/keystore/AllwinnerU807.jks differ diff --git a/app/keystore/iPlay50P.jks b/app/keystore/iPlay50P.jks new file mode 100644 index 0000000..496ef8d Binary files /dev/null and b/app/keystore/iPlay50P.jks differ diff --git a/app/src/main/java/com/uiui/zyappstore/activity/DetailsActivity.java b/app/src/main/java/com/uiui/zyappstore/activity/DetailsActivity.java index 51ee697..b9358e6 100644 --- a/app/src/main/java/com/uiui/zyappstore/activity/DetailsActivity.java +++ b/app/src/main/java/com/uiui/zyappstore/activity/DetailsActivity.java @@ -33,6 +33,7 @@ import com.uiui.zyappstore.bean.AppInfo; import com.uiui.zyappstore.bean.BaseResponse; import com.uiui.zyappstore.bean.GlideCircleWithBorder; import com.uiui.zyappstore.common.CommonConfig; +import com.uiui.zyappstore.dialog.InstallDialog; import com.uiui.zyappstore.helper.CustomSnapHelper; import com.uiui.zyappstore.network.NetInterfaceManager; import com.uiui.zyappstore.utils.ApkUtils; @@ -143,7 +144,32 @@ public class DetailsActivity extends BaseActivity { @Override public void onClick(View v) { if (!Utils.canDownloadApp(DetailsActivity.this)) { - ToastUtil.show("应用市场已被禁止安装"); +// ToastUtil.show("应用市场已被禁止安装"); + + InstallDialog installDialog = new InstallDialog(DetailsActivity.this); + installDialog.setMessage(String.format(getString(R.string.install_note), appInfo.getApp_name())) + .setTitle("提示") + .setPositive("申请安装") + .setNegtive("取消") + .setImageUrl(appInfo.getApp_img()) + .setOnClickBottomListener(new InstallDialog.OnClickBottomListener() { + @Override + public void onPositiveClick() { + NetInterfaceManager.getInstance().getApplyForInstall(appInfo.getApp_package(), appInfo.getApp_name() + , new NetInterfaceManager.onCompleteCallback() { + @Override + public void onComplete() { + installDialog.dismiss(); + } + }); + } + + @Override + public void onNegtiveClick() { + installDialog.dismiss(); + } + }); + installDialog.show(); return; } if (installed && !update) { diff --git a/app/src/main/java/com/uiui/zyappstore/adapter/AppAdapter.java b/app/src/main/java/com/uiui/zyappstore/adapter/AppAdapter.java index 00db57f..baf17af 100644 --- a/app/src/main/java/com/uiui/zyappstore/adapter/AppAdapter.java +++ b/app/src/main/java/com/uiui/zyappstore/adapter/AppAdapter.java @@ -28,6 +28,8 @@ import com.uiui.zyappstore.activity.DetailsActivity; import com.uiui.zyappstore.bean.AppInfo; import com.uiui.zyappstore.bean.GlideCircleWithBorder; import com.uiui.zyappstore.common.CommonConfig; +import com.uiui.zyappstore.dialog.InstallDialog; +import com.uiui.zyappstore.network.NetInterfaceManager; import com.uiui.zyappstore.utils.ApkUtils; import com.uiui.zyappstore.utils.FileUtils; import com.uiui.zyappstore.utils.StorageUtils; @@ -139,7 +141,32 @@ public class AppAdapter extends RecyclerView.Adapter { ApkUtils.openApp(mContext, appInfo.getApp_package()); } else { if (!Utils.canDownloadApp(mContext)) { - ToastUtil.show("应用市场已被禁止安装"); +// ToastUtil.show("应用市场已被禁止安装"); + + InstallDialog installDialog = new InstallDialog(mContext); + installDialog.setMessage(String.format(mContext.getString(R.string.install_note), appInfo.getApp_name())) + .setTitle("提示") + .setPositive("申请安装") + .setNegtive("取消") + .setImageUrl(appInfo.getApp_img()) + .setOnClickBottomListener(new InstallDialog.OnClickBottomListener() { + @Override + public void onPositiveClick() { + NetInterfaceManager.getInstance().getApplyForInstall(appInfo.getApp_package(), appInfo.getApp_name(), + new NetInterfaceManager.onCompleteCallback() { + @Override + public void onComplete() { + installDialog.dismiss(); + } + }); + } + + @Override + public void onNegtiveClick() { + installDialog.dismiss(); + } + }); + installDialog.show(); return; } Utils.addPackageToWhiteList(mContext, appInfo.getApp_package()); diff --git a/app/src/main/java/com/uiui/zyappstore/dialog/InstallDialog.java b/app/src/main/java/com/uiui/zyappstore/dialog/InstallDialog.java new file mode 100644 index 0000000..b4d593e --- /dev/null +++ b/app/src/main/java/com/uiui/zyappstore/dialog/InstallDialog.java @@ -0,0 +1,249 @@ +package com.uiui.zyappstore.dialog; + +import android.content.Context; +import android.os.Bundle; +import android.text.TextUtils; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.appcompat.app.AlertDialog; + +import com.uiui.zyappstore.R; +import com.uiui.zyappstore.utils.GlideLoadUtils; + +/** + * description:自定义dialog + */ + +public class InstallDialog extends AlertDialog { + /** + * 显示的图片 + */ + private ImageView imageIv; + + /** + * 显示的标题 + */ + private TextView titleTv; + + /** + * 显示的消息 + */ + private TextView messageTv; + + /** + * 确认和取消按钮 + */ + private TextView negtiveBn, positiveBn; + + /** + * 按钮之间的分割线 + */ +// private View columnLineView; + + private Context mContext; + + public InstallDialog(Context context) { + super(context, R.style.CustomDialog); + this.mContext = context; + } + + /** + * 都是内容数据 + */ + private String message; + private String title; + private String positive, negtive; + private String imageUrl; + + /** + * 底部是否只有一个按钮 + */ + private boolean isSingle = false; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.dialog_install); + //按空白处不能取消动画 + setCanceledOnTouchOutside(false); + //初始化界面控件 + initView(); + //初始化界面数据 + refreshView(); + //初始化界面控件的事件 + initEvent(); + } + + /** + * 初始化界面的确定和取消监听器 + */ + private void initEvent() { + //设置确定按钮被点击后,向外界提供监听 + positiveBn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (onClickBottomListener != null) { + onClickBottomListener.onPositiveClick(); + } + } + }); + //设置取消按钮被点击后,向外界提供监听 + negtiveBn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (onClickBottomListener != null) { + onClickBottomListener.onNegtiveClick(); + } + } + }); + } + + /** + * 初始化界面控件的显示数据 + */ + private void refreshView() { + //如果用户自定了title和message + if (!TextUtils.isEmpty(title)) { + titleTv.setText(title); + titleTv.setVisibility(View.VISIBLE); + } else { + titleTv.setVisibility(View.GONE); + } + if (!TextUtils.isEmpty(message)) { + messageTv.setText(message); + } + //如果设置按钮的文字 + if (!TextUtils.isEmpty(positive)) { + positiveBn.setText(positive); + } else { + positiveBn.setText("确定"); + } + if (!TextUtils.isEmpty(negtive)) { + negtiveBn.setText(negtive); + } else { + negtiveBn.setText("取消"); + } + + if (!TextUtils.isEmpty(imageUrl)) { + GlideLoadUtils.getInstance().glideLoad(mContext, imageUrl, imageIv, R.mipmap.ic_launcher); + imageIv.setVisibility(View.VISIBLE); + } else { + imageIv.setVisibility(View.GONE); + } + /** + * 只显示一个按钮的时候隐藏取消按钮,回掉只执行确定的事件 + */ + if (isSingle) { +// columnLineView.setVisibility(View.GONE); + negtiveBn.setVisibility(View.GONE); + } else { + negtiveBn.setVisibility(View.VISIBLE); +// columnLineView.setVisibility(View.VISIBLE); + } + } + + @Override + public void show() { + super.show(); + refreshView(); + } + + /** + * 初始化界面控件 + */ + private void initView() { + negtiveBn = findViewById(R.id.negtive); + positiveBn = findViewById(R.id.positive); + titleTv = findViewById(R.id.title); + messageTv = findViewById(R.id.message); + imageIv = findViewById(R.id.image); +// columnLineView = findViewById(R.id.column_line); + } + + /** + * 设置确定取消按钮的回调 + */ + private OnClickBottomListener onClickBottomListener; + + public void setOnClickBottomListener(OnClickBottomListener onClickBottomListener) { + this.onClickBottomListener = onClickBottomListener; + } + + public interface OnClickBottomListener { + /** + * 点击确定按钮事件 + */ + void onPositiveClick(); + + /** + * 点击取消按钮事件 + */ + void onNegtiveClick(); + } + + public String getMessage() { + return message; + } + + public InstallDialog setMessage(String message) { + this.message = message; + return this; + } + + public String getTitle() { + return title; + } + + public InstallDialog setTitle(String title) { + this.title = title; + return this; + } + + public String getPositive() { + return positive; + } + + public InstallDialog setPositive(String positive) { + this.positive = positive; + return this; + } + + public String getNegtive() { + return negtive; + } + + public InstallDialog setNegtive(String negtive) { + this.negtive = negtive; + return this; + } + + public InstallDialog setNegtiveText(String negtive) { + negtiveBn.setText(negtive); + return this; + } + + public String getImageUrl() { + return imageUrl; + } + + public boolean isSingle() { + return isSingle; + } + + public InstallDialog setSingle(boolean single) { + isSingle = single; + return this; + } + + public InstallDialog setImageUrl(String imageResId) { + this.imageUrl = imageResId; + return this; + } + + @Override + public void dismiss() { + super.dismiss(); + } +} diff --git a/app/src/main/java/com/uiui/zyappstore/network/NetInterfaceManager.java b/app/src/main/java/com/uiui/zyappstore/network/NetInterfaceManager.java index f9055db..e25d4b1 100644 --- a/app/src/main/java/com/uiui/zyappstore/network/NetInterfaceManager.java +++ b/app/src/main/java/com/uiui/zyappstore/network/NetInterfaceManager.java @@ -14,6 +14,7 @@ import com.uiui.zyappstore.common.CommonConfig; import com.uiui.zyappstore.disklrucache.CacheHelper; import com.uiui.zyappstore.network.api.AdminAppApi; import com.uiui.zyappstore.network.api.AdminAppClassApi; +import com.uiui.zyappstore.network.api.ApplyForInstallApi; import com.uiui.zyappstore.network.api.BannerImage; import com.uiui.zyappstore.network.api.ClassAppApi; import com.uiui.zyappstore.network.api.DownloadApp; @@ -26,6 +27,7 @@ import com.uiui.zyappstore.network.api.SearchAdminAppApi; import com.uiui.zyappstore.network.api.SearchAppApi; import com.uiui.zyappstore.network.interceptor.RepeatRequestInterceptor; import com.uiui.zyappstore.utils.JGYUtils; +import com.uiui.zyappstore.utils.ToastUtil; import com.uiui.zyappstore.utils.Utils; import java.io.File; @@ -37,7 +39,10 @@ import java.util.Set; import java.util.concurrent.TimeUnit; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.annotations.NonNull; import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; import io.reactivex.rxjava3.schedulers.Schedulers; import okhttp3.Cache; import okhttp3.OkHttpClient; @@ -159,6 +164,14 @@ public class NetInterfaceManager { .observeOn(AndroidSchedulers.mainThread()); } + public Observable getApplyForInstallObservable(String pkg, String name) { + return mRetrofit.create(ApplyForInstallApi.class) + .applyForInstall(pkg, name, Utils.getSerial()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + + public SNInfo getuserInfoControl() { return mRetrofit.create(SNInfo.class); } @@ -216,6 +229,10 @@ public class NetInterfaceManager { set.add(JGYUtils.iPlay5013Tag); } else if (platform == JGYUtils.iPlay50miniProPlatform) { set.add(JGYUtils.iPlay50miniProTag); + } else if (platform == JGYUtils.U807Platform) { + set.add(JGYUtils.U807Tag); + } else if (platform == JGYUtils.iPlay50PPlatform) { + set.add(JGYUtils.iPlay50PTag); } }); setpushTag(set); @@ -249,4 +266,37 @@ public class NetInterfaceManager { // } // }); } + + + public void getApplyForInstall(String pkg, String name, onCompleteCallback callback) { + getApplyForInstallObservable(pkg, name) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("getApplyForInstall", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse baseResponse) { + Log.e("getApplyForInstall", "onNext: " + baseResponse); + ToastUtil.show(baseResponse.msg); + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getApplyForInstall", "onError: " + e.getMessage()); + ToastUtil.show("网络连接失败"); + onComplete(); + } + + @Override + public void onComplete() { + Log.e("getApplyForInstall", "onComplete: "); + if (callback != null) { + callback.onComplete(); + } + } + }); + } + } \ No newline at end of file diff --git a/app/src/main/java/com/uiui/zyappstore/network/UrlAddress.java b/app/src/main/java/com/uiui/zyappstore/network/UrlAddress.java index ad92c67..5a60536 100644 --- a/app/src/main/java/com/uiui/zyappstore/network/UrlAddress.java +++ b/app/src/main/java/com/uiui/zyappstore/network/UrlAddress.java @@ -3,20 +3,23 @@ package com.uiui.zyappstore.network; public class UrlAddress { public static final String ROOT_URL = "https://led.aolelearn.com/android/"; - //获取所有应用 + /*获取所有应用*/ public final static String GET_ALL_APPINFO = "app/queryAllApp"; - //获取管理员应用分类 + /*获取管理员应用分类*/ public final static String GET_ADMIN_APP_CLASS = "app/getAdminAppClass"; - //获取管理员所有应用 + /*获取管理员所有应用*/ public final static String GET_ADMIN_APP = "getAdminApp"; - //获取应用详情 + /*获取应用详情*/ public final static String GET_PACKAGE_APP = "app/queryPackageApp"; - //通过SN获取绑定信息 + /*通过SN获取绑定信息*/ public final static String GET_INFO_FROMESN = "sn/getSnInfo"; - //获取banner图 + /*获取banner图*/ public final static String GET_BANNER_IMG = "app/getBrand"; public final static String GET_BANNER = "sn/getBanner"; public final static String SEND_DOWNLOADAPP = "app/downloadApp"; - //根据包名获取更新 + /*根据包名获取更新*/ public final static String GET_NEWESTAPPUPDATE = "app/newestAppUpdate"; + /*应用安装申请*/ + public final static String APPLY_FOR_INSTALL = "app/applyForInstall"; + } diff --git a/app/src/main/java/com/uiui/zyappstore/network/api/ApplyForInstallApi.java b/app/src/main/java/com/uiui/zyappstore/network/api/ApplyForInstallApi.java new file mode 100644 index 0000000..f02d244 --- /dev/null +++ b/app/src/main/java/com/uiui/zyappstore/network/api/ApplyForInstallApi.java @@ -0,0 +1,21 @@ +package com.uiui.zyappstore.network.api; + +import com.uiui.zyappstore.bean.BaseResponse; +import com.uiui.zyappstore.network.UrlAddress; + +import io.reactivex.rxjava3.core.Observable; +import retrofit2.http.Field; +import retrofit2.http.FormUrlEncoded; +import retrofit2.http.GET; +import retrofit2.http.POST; +import retrofit2.http.Query; + +public interface ApplyForInstallApi { + @FormUrlEncoded + @POST(UrlAddress.APPLY_FOR_INSTALL) + Observable applyForInstall( + @Field("package") String packageName, + @Field("app_name") String app_name, + @Field("sn") String sn + ); +} diff --git a/app/src/main/java/com/uiui/zyappstore/network/api/NewestAppUpdate.java b/app/src/main/java/com/uiui/zyappstore/network/api/NewestAppUpdate.java index bbe7785..87802eb 100644 --- a/app/src/main/java/com/uiui/zyappstore/network/api/NewestAppUpdate.java +++ b/app/src/main/java/com/uiui/zyappstore/network/api/NewestAppUpdate.java @@ -1,7 +1,5 @@ package com.uiui.zyappstore.network.api; - - import com.uiui.zyappstore.bean.AppInfo; import com.uiui.zyappstore.bean.BaseResponse; import com.uiui.zyappstore.network.UrlAddress; diff --git a/app/src/main/java/com/uiui/zyappstore/utils/GlideLoadUtils.java b/app/src/main/java/com/uiui/zyappstore/utils/GlideLoadUtils.java new file mode 100644 index 0000000..17b1aa7 --- /dev/null +++ b/app/src/main/java/com/uiui/zyappstore/utils/GlideLoadUtils.java @@ -0,0 +1,78 @@ +package com.uiui.zyappstore.utils; + +import android.annotation.TargetApi; +import android.app.Activity; +import android.content.Context; +import android.os.Build; +import android.util.Log; +import android.widget.ImageView; + +import androidx.fragment.app.Fragment; + +import com.bumptech.glide.Glide; + +/** + * Glide 加载 简单判空封装 防止异步加载数据时调用Glide 抛出异常 + * Created by Li_Xavier on 2017/6/20 0020. + */ +public class GlideLoadUtils { + private String TAG = "ImageLoader"; + + /** + * 借助内部类 实现线程安全的单例模式 + * 属于懒汉式单例,因为Java机制规定,内部类SingletonHolder只有在getInstance() + * 方法第一次调用的时候才会被加载(实现了lazy),而且其加载过程是线程安全的。 + * 内部类加载的时候实例化一次instance。 + */ + public GlideLoadUtils() { + } + + private static class GlideLoadUtilsHolder { + private final static GlideLoadUtils INSTANCE = new GlideLoadUtils(); + } + + public static GlideLoadUtils getInstance() { + return GlideLoadUtilsHolder.INSTANCE; + } + + /** + * Glide 加载 简单判空封装 防止异步加载数据时调用Glide 抛出异常 + * + * @param context + * @param url 加载图片的url地址 String + * @param imageView 加载图片的ImageView 控件 + * @param default_image 图片展示错误的本地图片 id + */ + public void glideLoad(Context context, String url, ImageView imageView, int default_image) { + if (context != null) { + Glide.with(context).load(url).centerCrop().error(default_image).into(imageView); + } else { + Log.i(TAG, "Picture loading failed,context is null"); + } + } + + @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) + public void glideLoad(Activity activity, String url, ImageView imageView, int default_image) { + if (!activity.isDestroyed()) { + Glide.with(activity).load(url).centerCrop().error(default_image).into(imageView); + } else { + Log.i(TAG, "Picture loading failed,activity is Destroyed"); + } + } + + public void glideLoad(Fragment fragment, String url, ImageView imageView, int default_image) { + if (fragment != null && fragment.getActivity() != null) { + Glide.with(fragment).load(url).centerCrop().error(default_image).into(imageView); + } else { + Log.i(TAG, "Picture loading failed,fragment is null"); + } + } + + public void glideLoad(android.app.Fragment fragment, String url, ImageView imageView, int default_image) { + if (fragment != null && fragment.getActivity() != null) { + Glide.with(fragment).load(url).centerCrop().error(default_image).into(imageView); + } else { + Log.i(TAG, "Picture loading failed,android.app.Fragment is null"); + } + } +} diff --git a/app/src/main/java/com/uiui/zyappstore/utils/JGYUtils.java b/app/src/main/java/com/uiui/zyappstore/utils/JGYUtils.java index ed208c7..a10eec4 100644 --- a/app/src/main/java/com/uiui/zyappstore/utils/JGYUtils.java +++ b/app/src/main/java/com/uiui/zyappstore/utils/JGYUtils.java @@ -62,6 +62,10 @@ public class JGYUtils { public static final int iPlayMiniPlatform = 13; public static final int iPlay5013Platform = 14; public static final int iPlay50miniProPlatform = 16; + public static final int U807Platform = 19; + public static final int iPlay50PPlatform = 21; + + public static final int UnknowPlatform = 0; public static final String MTKTag = "MTK"; @@ -75,6 +79,8 @@ public class JGYUtils { public static final String iPlayMiniTag = "T811"; public static final String iPlay5013Tag = "iplay5013"; public static final String iPlay50miniProTag = "miniG99"; + public static final String U807Tag = "U807"; + public static final String iPlay50PTag = "T1102"; private JGYUtils(Context context) { @@ -354,14 +360,19 @@ public class JGYUtils { } else if (iPlay5013Tag.equalsIgnoreCase(platform)) { Log.i(TAG, "checkAppPlatform: " + "ipaly50 13"); return iPlay5013Platform; - }else if (iPlay50miniProTag.equalsIgnoreCase(platform)) { + } else if (iPlay50miniProTag.equalsIgnoreCase(platform)) { Log.i(TAG, "checkAppPlatform: " + "miniG99"); return iPlay50miniProPlatform; - } else { + } else if (U807Tag.equalsIgnoreCase(platform)) { + Log.i(TAG, "checkAppPlatform: " + "U807"); + return U807Platform; + } else if (iPlay50PTag.equalsIgnoreCase(platform)) { + Log.i(TAG, "checkAppPlatform: " + "T1102"); + return iPlay50PPlatform; + } else { Log.i(TAG, "checkAppPlatform: " + "没有数据"); return UnknowPlatform; } - } public boolean isSamePlatform(String platform) { @@ -399,8 +410,12 @@ public class JGYUtils { getAppPlatformCallback.AppPlatform(iPlayMiniPlatform); } else if (iPlay5013Tag.equalsIgnoreCase(platform)) { getAppPlatformCallback.AppPlatform(iPlay5013Platform); - } else if (iPlay50miniProTag.equalsIgnoreCase(platform)) { + } else if (iPlay50miniProTag.equalsIgnoreCase(platform)) { getAppPlatformCallback.AppPlatform(iPlay50miniProPlatform); + } else if (U807Tag.equalsIgnoreCase(platform)) { + getAppPlatformCallback.AppPlatform(U807Platform); + } else if (iPlay50PTag.equalsIgnoreCase(platform)) { + getAppPlatformCallback.AppPlatform(iPlay50PPlatform); } else { getAppPlatformCallback.AppPlatform(UnknowPlatform); } diff --git a/app/src/main/res/drawable/bg_dialog.xml b/app/src/main/res/drawable/bg_dialog.xml new file mode 100644 index 0000000..64427cc --- /dev/null +++ b/app/src/main/res/drawable/bg_dialog.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/app/src/main/res/drawable/join_background.xml b/app/src/main/res/drawable/join_background.xml new file mode 100644 index 0000000..75ac08f --- /dev/null +++ b/app/src/main/res/drawable/join_background.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/joined_background.xml b/app/src/main/res/drawable/joined_background.xml new file mode 100644 index 0000000..5e209a7 --- /dev/null +++ b/app/src/main/res/drawable/joined_background.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_install.xml b/app/src/main/res/layout/dialog_install.xml new file mode 100644 index 0000000..ecece03 --- /dev/null +++ b/app/src/main/res/layout/dialog_install.xml @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index f250bd6..3d5ab30 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -23,4 +23,6 @@ #f3f0f0 #4880ff + #4880ff + #CFCFCF diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1a659ac..e176cb8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -18,4 +18,6 @@ 偏科助手 基础工具 学习软件 + + 基于安全管理策略,【%s】需要家长审批后才能安装 diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 4af9ae1..8cd71d2 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -48,4 +48,16 @@ 16dp + diff --git a/settings.gradle b/settings.gradle index 886d1e1..116062a 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1,2 @@ include ':app' -rootProject.name='科大讯飞应用市场' +rootProject.name='酷信应用市场'