version:1.1.2
fix: update:优化其他学科滑动问题,NoSlideViewPager替换为viewpager2,退出桌面获取已安装的
This commit is contained in:
@@ -16,8 +16,8 @@ android {
|
||||
minSdkVersion 24
|
||||
targetSdkVersion 29
|
||||
|
||||
versionCode 11
|
||||
versionName "1.1.0"
|
||||
versionCode 13
|
||||
versionName "1.1.2"
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
android:screenOrientation="landscape"
|
||||
android:theme="@style/AppThemeWithoutFitsSystemWindows" />
|
||||
<activity
|
||||
android:name=".activity.AddIconActivity"
|
||||
android:name=".activity.addicon.AddIconActivity"
|
||||
android:launchMode="singleTask"
|
||||
android:screenOrientation="landscape" />
|
||||
<activity
|
||||
|
||||
@@ -3,6 +3,8 @@ package com.xwad.os.activity;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.media.AudioAttributes;
|
||||
import android.media.SoundPool;
|
||||
import android.os.Build;
|
||||
@@ -17,12 +19,18 @@ import android.view.inputmethod.InputMethodManager;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
|
||||
import com.tuo.customview.VerificationCodeView;
|
||||
import com.xwad.os.BuildConfig;
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.base.BaseDataBindingActivity;
|
||||
import com.xwad.os.config.CommonConfig;
|
||||
import com.xwad.os.databinding.ActivityExitBinding;
|
||||
import com.xwad.os.utils.Utils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class ExitActivity extends BaseDataBindingActivity {
|
||||
private static final String TAG = "ExitActivity";
|
||||
|
||||
@@ -127,11 +135,47 @@ public class ExitActivity extends BaseDataBindingActivity {
|
||||
}
|
||||
}
|
||||
|
||||
private List<ComponentName> getAllLauncherApps() {
|
||||
PackageManager packageManager = getPackageManager();
|
||||
|
||||
// 构建用于查询桌面应用的Intent
|
||||
Intent intent = new Intent(Intent.ACTION_MAIN);
|
||||
intent.addCategory(Intent.CATEGORY_HOME);
|
||||
|
||||
// 查询所有可以处理该Intent的Activity
|
||||
List<ResolveInfo> resolveInfoList = packageManager.queryIntentActivities(intent, PackageManager.MATCH_ALL);
|
||||
|
||||
List<ComponentName> launcherPackageList = resolveInfoList.stream().filter(new Predicate<ResolveInfo>() {
|
||||
@Override
|
||||
public boolean test(ResolveInfo resolveInfo) {
|
||||
return !BuildConfig.APPLICATION_ID.equals(resolveInfo.activityInfo.packageName)
|
||||
|| !"com.jxw.launcher".equals(resolveInfo.activityInfo.packageName)
|
||||
|| !"com.handuan.os".equals(resolveInfo.activityInfo.packageName);
|
||||
}
|
||||
}).map(new Function<ResolveInfo, ComponentName>() {
|
||||
@Override
|
||||
public ComponentName apply(ResolveInfo resolveInfo) {
|
||||
return resolveInfo.getComponentInfo().getComponentName();
|
||||
}
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
return launcherPackageList;
|
||||
}
|
||||
|
||||
private void exitDesktop() {
|
||||
ComponentName componentName = new ComponentName("com.hihonor.android.launcher", "com.hihonor.android.launcher.unihome.UniHomeLauncher");
|
||||
List<ComponentName> componentNames = getAllLauncherApps();
|
||||
Log.e(TAG, "exitDesktop: " + componentNames);
|
||||
if (componentNames != null && componentNames.size() != 0) {
|
||||
ComponentName componentName = componentNames.get(0);
|
||||
Intent intent = new Intent();
|
||||
intent.setComponent(componentName);
|
||||
try {
|
||||
startActivity(intent);
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "exitDesktop: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
startActivity(new Intent(Settings.ACTION_HOME_SETTINGS));
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.xwad.os.activity;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.provider.Settings;
|
||||
import android.text.TextUtils;
|
||||
@@ -14,6 +15,7 @@ import androidx.databinding.DataBindingUtil;
|
||||
|
||||
import com.tuo.customview.VerificationCodeView;
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.activity.addicon.AddIconActivity;
|
||||
import com.xwad.os.base.BaseDataBindingActivity;
|
||||
import com.xwad.os.config.CommonConfig;
|
||||
import com.xwad.os.databinding.ActivityPasswdBinding;
|
||||
@@ -29,6 +31,12 @@ public class PasswordActivity extends BaseDataBindingActivity {
|
||||
// return true;
|
||||
// }
|
||||
|
||||
|
||||
// @Override
|
||||
// public boolean setfitWindow() {
|
||||
// return true;
|
||||
// }
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_passwd);
|
||||
@@ -36,6 +44,26 @@ public class PasswordActivity extends BaseDataBindingActivity {
|
||||
|
||||
@Override
|
||||
public void initView() {
|
||||
if (Build.VERSION.SDK_INT >= 33) {
|
||||
hideSystemUI();
|
||||
}
|
||||
// 全屏展示
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
// 全屏显示,隐藏状态栏和导航栏,拉出状态栏和导航栏显示一会儿后消失。
|
||||
getWindow().getDecorView().setSystemUiVisibility(
|
||||
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
|
||||
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
||||
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|
||||
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
|
||||
| View.SYSTEM_UI_FLAG_FULLSCREEN
|
||||
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
|
||||
} else {
|
||||
// 全屏显示,隐藏状态栏
|
||||
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
|
||||
}
|
||||
}
|
||||
|
||||
getWindow().addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
|
||||
|
||||
InputMethodManager imm = (InputMethodManager) PasswordActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||
@@ -85,6 +113,20 @@ public class PasswordActivity extends BaseDataBindingActivity {
|
||||
mBinding.bt9.setOnClickListener(view1 -> add(mBinding.icv, "9"));
|
||||
}
|
||||
|
||||
private void hideSystemUI() {
|
||||
// Enables regular immersive mode.
|
||||
// For "lean back" mode, remove SYSTEM_UI_FLAG_IMMERSIVE.
|
||||
// Or for "sticky immersive," replace it with SYSTEM_UI_FLAG_IMMERSIVE_STICKY
|
||||
View decorView = getWindow().getDecorView();
|
||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_IMMERSIVE
|
||||
// Set the content to appear under the system bars so that the
|
||||
// content doesn't resize when the system bars hide and show.
|
||||
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|
||||
// | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
||||
// Hide the nav bar and status bar
|
||||
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN);
|
||||
}
|
||||
|
||||
private void checkPasswd() {
|
||||
String content = mBinding.icv.getInputContent();
|
||||
if (TextUtils.isEmpty(content) || content.length() != 6) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.xwad.os.activity;
|
||||
package com.xwad.os.activity.addicon;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.DisplayMetrics;
|
||||
@@ -11,6 +11,7 @@ import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.adapter.AddAppAdapter;
|
||||
import com.xwad.os.base.BaseDataBindingActivity;
|
||||
import com.xwad.os.base.mvvm.BaseMvvmActivity;
|
||||
import com.xwad.os.bean.DesktopIcon;
|
||||
import com.xwad.os.databinding.ActivityAddIconBinding;
|
||||
import com.xwad.os.manager.AppManager;
|
||||
@@ -20,27 +21,26 @@ import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Set;
|
||||
|
||||
public class AddIconActivity extends BaseDataBindingActivity {
|
||||
|
||||
private ActivityAddIconBinding mBinding;
|
||||
public class AddIconActivity extends BaseMvvmActivity<AddIconViewModel, ActivityAddIconBinding> {
|
||||
|
||||
private AddAppAdapter mAddAppAdapter;
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.activity_add_icon;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_add_icon);
|
||||
mViewModel.setCtx(this);
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initView() {
|
||||
mBinding.ivBack.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
|
||||
mBinding.recyclerView.setLayoutManager(new GridLayoutManager(this, 6));
|
||||
mViewDataBinding.recyclerView.setLayoutManager(new GridLayoutManager(this, 6));
|
||||
HashMap<String, Integer> stringIntegerHashMap = new HashMap<>();
|
||||
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
|
||||
DisplayMetrics dm = new DisplayMetrics();
|
||||
@@ -50,9 +50,9 @@ public class AddIconActivity extends BaseDataBindingActivity {
|
||||
stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.BOTTOM_DECORATION, (int) (density * 1));//底部间距
|
||||
stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.LEFT_DECORATION, (int) (density * 20));//左间距
|
||||
stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.RIGHT_DECORATION, (int) (density * 20));//右间距
|
||||
mBinding.recyclerView.addItemDecoration(new RecyclerViewSpacesItemDecoration(stringIntegerHashMap));
|
||||
mViewDataBinding.recyclerView.addItemDecoration(new RecyclerViewSpacesItemDecoration(stringIntegerHashMap));
|
||||
mAddAppAdapter = new AddAppAdapter();
|
||||
mBinding.recyclerView.setAdapter(mAddAppAdapter);
|
||||
mViewDataBinding.recyclerView.setAdapter(mAddAppAdapter);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -62,6 +62,13 @@ public class AddIconActivity extends BaseDataBindingActivity {
|
||||
Set<String> appList = AppManager.getInstance().getFilterAppset();
|
||||
mAddAppAdapter.setPackageSet(appList);
|
||||
|
||||
mBinding.tvAppsize.setText(String.format(getString(R.string.app_size), desktopIcons.size()));
|
||||
mViewDataBinding.tvAppsize.setText(String.format(getString(R.string.app_size), desktopIcons.size()));
|
||||
}
|
||||
|
||||
|
||||
public class BtnClick {
|
||||
public void exit(View view) {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xwad.os.activity.addicon;
|
||||
|
||||
import com.trello.rxlifecycle4.android.ActivityEvent;
|
||||
import com.xwad.os.base.mvvm.BaseViewModel;
|
||||
import com.xwad.os.databinding.ActivityAddIconBinding;
|
||||
|
||||
public class AddIconViewModel extends BaseViewModel<ActivityAddIconBinding, ActivityEvent> {
|
||||
|
||||
@Override
|
||||
public ActivityAddIconBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.os.BatteryManager;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
@@ -45,6 +46,7 @@ import com.xwad.os.databinding.ActivityHomeBinding;
|
||||
import com.xwad.os.dialog.PermissionsDialog;
|
||||
import com.xwad.os.dialog.PrivacyPolicyDialog;
|
||||
import com.xwad.os.fragment.ai.AiFragment;
|
||||
import com.xwad.os.fragment.app.AppFragment;
|
||||
import com.xwad.os.fragment.chinese.ChineseFragment;
|
||||
import com.xwad.os.fragment.complex.ComplexFragment;
|
||||
import com.xwad.os.fragment.english.EnglishFragment;
|
||||
@@ -74,6 +76,9 @@ import org.greenrobot.eventbus.ThreadMode;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import me.jessyan.autosize.AutoSizeCompat;
|
||||
import me.jessyan.autosize.AutoSizeConfig;
|
||||
|
||||
public class HomeActivity extends BaseMvvmActivity<HomeViewModel, ActivityHomeBinding> implements RemoteManager.ConnectedListener {
|
||||
private static final String TAG = "HomeActivity";
|
||||
|
||||
@@ -98,6 +103,15 @@ public class HomeActivity extends BaseMvvmActivity<HomeViewModel, ActivityHomeBi
|
||||
return R.layout.activity_home;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Resources getResources() {
|
||||
//需要升级到 v1.1.2 及以上版本才能使用 AutoSizeCompat
|
||||
int width = AutoSizeConfig.getInstance().getScreenWidth();
|
||||
int height = AutoSizeConfig.getInstance().getScreenHeight();
|
||||
AutoSizeCompat.autoConvertDensity(super.getResources(), 624, width > height);
|
||||
return super.getResources();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mViewModel.setCtx(this);
|
||||
@@ -251,7 +265,7 @@ public class HomeActivity extends BaseMvvmActivity<HomeViewModel, ActivityHomeBi
|
||||
// if ("小学".equals(Util.checkGrade(SPUtils.getGrade()))) {
|
||||
fragments.add(new SztzFragment());
|
||||
// }
|
||||
fragments.add(new SafeFragment());
|
||||
fragments.add(new AppFragment());
|
||||
|
||||
tabBeanLists.add(new TabBean("我的", R.drawable.icon_tab_wd, R.drawable.icon_tab_wd_pre));
|
||||
tabBeanLists.add(new TabBean("AI+学习", R.drawable.icon_tab_aixx, R.drawable.icon_tab_aixx_pre));
|
||||
|
||||
@@ -53,25 +53,27 @@ public class AddAppAdapter extends RecyclerView.Adapter<AddAppAdapter.AppHolder>
|
||||
holder.iv_select.setImageDrawable(mContext.getDrawable(R.drawable.icon_unselect));
|
||||
}
|
||||
}
|
||||
holder.iv_icon.setImageDrawable(desktopIcon.getIcon());
|
||||
|
||||
Log.e(TAG, "getView: " + pkg);
|
||||
int i = IconUtils.appClassNameList.indexOf(pkg);
|
||||
if (i != -1) {
|
||||
String val = IconUtils.appIconList.get(i);
|
||||
int resID = mContext.getResources().getIdentifier(val, "drawable", BuildConfig.APPLICATION_ID);
|
||||
if (resID == 0) {
|
||||
Log.e(TAG, "getView: not found src : " + pkg);
|
||||
holder.iv_icon.setImageBitmap(BitmapUtils.getIconBitmap(mContext, desktopIcon.getIcon()));
|
||||
} else {
|
||||
holder.iv_icon.setImageDrawable(mContext.getResources().getDrawable(resID));
|
||||
}
|
||||
} else {
|
||||
if (AppManager.ADD_NAME.equals(pkg)) {
|
||||
holder.iv_icon.setImageDrawable(desktopIcon.getIcon());
|
||||
} else {
|
||||
holder.iv_icon.setImageBitmap(BitmapUtils.getIconBitmap(mContext, desktopIcon.getIcon()));
|
||||
}
|
||||
}
|
||||
|
||||
// int i = IconUtils.appClassNameList.indexOf(pkg);
|
||||
// if (i != -1) {
|
||||
// String val = IconUtils.appIconList.get(i);
|
||||
// int resID = mContext.getResources().getIdentifier(val, "drawable", BuildConfig.APPLICATION_ID);
|
||||
// if (resID == 0) {
|
||||
// Log.e(TAG, "getView: not found src : " + pkg);
|
||||
// holder.iv_icon.setImageBitmap(BitmapUtils.getIconBitmap(mContext, desktopIcon.getIcon()));
|
||||
// } else {
|
||||
// holder.iv_icon.setImageDrawable(mContext.getResources().getDrawable(resID));
|
||||
// }
|
||||
// } else {
|
||||
// if (AppManager.ADD_NAME.equals(pkg)) {
|
||||
// holder.iv_icon.setImageDrawable(desktopIcon.getIcon());
|
||||
// } else {
|
||||
// holder.iv_icon.setImageBitmap(BitmapUtils.getIconBitmap(mContext, desktopIcon.getIcon()));
|
||||
// }
|
||||
// }
|
||||
holder.root.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
|
||||
@@ -33,6 +33,8 @@ import com.xwad.os.utils.Utils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import me.jessyan.autosize.AutoSizeCompat;
|
||||
|
||||
public class AppAdapter extends RecyclerView.Adapter<AppAdapter.AppHolder> {
|
||||
private static final String TAG = "AppAdapter";
|
||||
|
||||
@@ -44,40 +46,44 @@ public class AppAdapter extends RecyclerView.Adapter<AppAdapter.AppHolder> {
|
||||
@Override
|
||||
public AppHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
mContext = parent.getContext();
|
||||
AutoSizeCompat.autoConvertDensityOfGlobal(mContext.getResources());
|
||||
return new AppHolder(LayoutInflater.from(mContext).inflate(R.layout.item_app, parent, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull AppHolder holder, int position) {
|
||||
AutoSizeCompat.autoConvertDensityOfGlobal(mContext.getResources());
|
||||
DesktopIcon desktopIcon = desktopIcons.get(position);
|
||||
String lable = desktopIcon.getLable();
|
||||
holder.tv_appname.setText(lable);
|
||||
holder.iv_icon.setImageDrawable(desktopIcon.getIcon());
|
||||
String pkg = desktopIcon.getPackageName();
|
||||
Log.e(TAG, "getView: " + pkg);
|
||||
int i = IconUtils.appClassNameList.indexOf(pkg);
|
||||
if (i != -1) {
|
||||
String val = IconUtils.appIconList.get(i);
|
||||
int resID = mContext.getResources().getIdentifier(val, "drawable", BuildConfig.APPLICATION_ID);
|
||||
if (resID == 0) {
|
||||
Log.e(TAG, "getView: not found src : " + pkg);
|
||||
holder.iv_icon.setImageBitmap(BitmapUtils.getIconBitmap(mContext, desktopIcon.getIcon()));
|
||||
} else {
|
||||
holder.iv_icon.setImageDrawable(mContext.getResources().getDrawable(resID));
|
||||
}
|
||||
} else {
|
||||
switch (pkg) {
|
||||
case AppManager.ADD_NAME:
|
||||
case AppManager.UPDATE_NAME:
|
||||
case AppManager.MANUAL_NAME:
|
||||
case AppManager.SERVICE_NAME:
|
||||
holder.iv_icon.setImageDrawable(desktopIcon.getIcon());
|
||||
break;
|
||||
default:
|
||||
holder.iv_icon.setImageBitmap(BitmapUtils.getIconBitmap(mContext, desktopIcon.getIcon()));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// int i = IconUtils.appClassNameList.indexOf(pkg);
|
||||
// if (i != -1) {
|
||||
// String val = IconUtils.appIconList.get(i);
|
||||
// int resID = mContext.getResources().getIdentifier(val, "drawable", BuildConfig.APPLICATION_ID);
|
||||
// if (resID == 0) {
|
||||
// Log.e(TAG, "getView: not found src : " + pkg);
|
||||
// holder.iv_icon.setImageBitmap(BitmapUtils.getIconBitmap(mContext, desktopIcon.getIcon()));
|
||||
// } else {
|
||||
// holder.iv_icon.setImageDrawable(mContext.getResources().getDrawable(resID));
|
||||
// }
|
||||
// } else {
|
||||
// switch (pkg) {
|
||||
// case AppManager.ADD_NAME:
|
||||
// case AppManager.UPDATE_NAME:
|
||||
// case AppManager.MANUAL_NAME:
|
||||
// case AppManager.SERVICE_NAME:
|
||||
// holder.iv_icon.setImageDrawable(desktopIcon.getIcon());
|
||||
// break;
|
||||
// default:
|
||||
// holder.iv_icon.setImageBitmap(BitmapUtils.getIconBitmap(mContext, desktopIcon.getIcon()));
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
holder.root.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
|
||||
@@ -96,7 +96,7 @@ public class AppFragment extends BaseMvvmFragment<AppViewModel, FragmentAppBindi
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
mViewDataBinding.rvApp.setLayoutManager(new GridLayoutManager(mContext, 6));
|
||||
mViewDataBinding.rvApp.setLayoutManager(new GridLayoutManager(mContext, 7));
|
||||
HashMap<String, Integer> stringIntegerHashMap = new HashMap<>();
|
||||
WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
|
||||
DisplayMetrics dm = new DisplayMetrics();
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.xwad.os.bean.DesktopIcon;
|
||||
import com.xwad.os.databinding.FragmentAppBinding;
|
||||
import com.xwad.os.manager.AppManager;
|
||||
import com.xwad.os.utils.ApkUtils;
|
||||
import com.xwad.os.utils.OpenApkUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
@@ -31,25 +32,25 @@ public class AppViewModel extends BaseViewModel<FragmentAppBinding, FragmentEven
|
||||
public void getInstalledApp() {
|
||||
ArrayList<DesktopIcon> desktopIcons = AppManager.getInstance().getFilterAppList();
|
||||
|
||||
DesktopIcon appstoreDesktopIcon = new DesktopIcon();
|
||||
appstoreDesktopIcon.setLable(ApkUtils.getAppName(getCtx(), "com.uiui.zyappstore"));
|
||||
appstoreDesktopIcon.setPackageName(AppManager.APPSTORE_PACKAGE_NAME);
|
||||
appstoreDesktopIcon.setClassName(AppManager.APPSTORE_CLASS_NAME);
|
||||
appstoreDesktopIcon.setLable("应用市场");
|
||||
Drawable appstoreDrawable;
|
||||
if (ApkUtils.isAvailable(getCtx(), AppManager.APPSTORE_PACKAGE_NAME)) {
|
||||
appstoreDrawable = ApkUtils.getAppDrawable(getCtx(), "com.uiui.zyappstore");
|
||||
} else {
|
||||
appstoreDrawable = getCtx().getDrawable(R.drawable.com_android_appstore);
|
||||
}
|
||||
appstoreDesktopIcon.setIcon(appstoreDrawable);
|
||||
desktopIcons.add(desktopIcons.size(), appstoreDesktopIcon);
|
||||
// DesktopIcon appstoreDesktopIcon = new DesktopIcon();
|
||||
// appstoreDesktopIcon.setLable(ApkUtils.getAppName(getCtx(), "com.uiui.zyappstore"));
|
||||
// appstoreDesktopIcon.setPackageName(AppManager.APPSTORE_PACKAGE_NAME);
|
||||
// appstoreDesktopIcon.setClassName(AppManager.APPSTORE_CLASS_NAME);
|
||||
// appstoreDesktopIcon.setLable("应用市场");
|
||||
// Drawable appstoreDrawable;
|
||||
// if (ApkUtils.isAvailable(getCtx(), AppManager.APPSTORE_PACKAGE_NAME)) {
|
||||
// appstoreDrawable = ApkUtils.getAppDrawable(getCtx(), "com.uiui.zyappstore");
|
||||
// } else {
|
||||
// appstoreDrawable = getCtx().getDrawable(R.drawable.com_android_appstore);
|
||||
// }
|
||||
// appstoreDesktopIcon.setIcon(appstoreDrawable);
|
||||
// desktopIcons.add(desktopIcons.size(), appstoreDesktopIcon);
|
||||
|
||||
DesktopIcon updateDesktopIcon = new DesktopIcon();
|
||||
updateDesktopIcon.setLable("应用更新");
|
||||
updateDesktopIcon.setPackageName(AppManager.UPDATE_NAME);
|
||||
updateDesktopIcon.setIcon(getCtx().getDrawable(R.drawable.icon_update));
|
||||
desktopIcons.add(desktopIcons.size(), updateDesktopIcon);
|
||||
// DesktopIcon updateDesktopIcon = new DesktopIcon();
|
||||
// updateDesktopIcon.setLable("应用更新");
|
||||
// updateDesktopIcon.setPackageName(AppManager.UPDATE_NAME);
|
||||
// updateDesktopIcon.setIcon(getCtx().getDrawable(R.drawable.icon_update));
|
||||
// desktopIcons.add(desktopIcons.size(), updateDesktopIcon);
|
||||
|
||||
// DesktopIcon manualIcon = new DesktopIcon();
|
||||
// manualIcon.setLable("使用手册");
|
||||
@@ -57,26 +58,26 @@ public class AppViewModel extends BaseViewModel<FragmentAppBinding, FragmentEven
|
||||
// manualIcon.setIcon(getCtx().getDrawable(R.drawable.icon_manual));
|
||||
// desktopIcons.add(desktopIcons.size(), manualIcon);
|
||||
|
||||
DesktopIcon browserIcon = new DesktopIcon();
|
||||
browserIcon.setIcon(getCtx().getDrawable(R.drawable.uiui_zybrowser));
|
||||
browserIcon.setLable("浏览器");
|
||||
browserIcon.setPackageName(AppManager.BROWSER_PACKAGE_NAME);
|
||||
browserIcon.setClassName(AppManager.BROWSER_CLASS_NAME);
|
||||
desktopIcons.add(browserIcon);
|
||||
// DesktopIcon browserIcon = new DesktopIcon();
|
||||
// browserIcon.setIcon(getCtx().getDrawable(R.drawable.uiui_zybrowser));
|
||||
// browserIcon.setLable("浏览器");
|
||||
// browserIcon.setPackageName(AppManager.BROWSER_PACKAGE_NAME);
|
||||
// browserIcon.setClassName(AppManager.BROWSER_CLASS_NAME);
|
||||
// desktopIcons.add(browserIcon);
|
||||
|
||||
DesktopIcon serviceIcon = new DesktopIcon();
|
||||
serviceIcon.setIcon(getCtx().getDrawable(R.drawable.service_icon));
|
||||
serviceIcon.setLable("联系客服");
|
||||
serviceIcon.setPackageName(AppManager.SERVICE_NAME);
|
||||
desktopIcons.add(serviceIcon);
|
||||
// DesktopIcon serviceIcon = new DesktopIcon();
|
||||
// serviceIcon.setIcon(getCtx().getDrawable(R.drawable.service_icon));
|
||||
// serviceIcon.setLable("联系客服");
|
||||
// serviceIcon.setPackageName(AppManager.SERVICE_NAME);
|
||||
// desktopIcons.add(serviceIcon);
|
||||
|
||||
if (ApkUtils.isAvailable(getCtx(), "com.jxw.zwpg")) {
|
||||
DesktopIcon zwpgIcon = new DesktopIcon();
|
||||
zwpgIcon.setIcon(getCtx().getDrawable(R.drawable.zwpg_icon));
|
||||
zwpgIcon.setLable("作文批改");
|
||||
zwpgIcon.setPackageName("com.jxw.zwpg");
|
||||
desktopIcons.add(zwpgIcon);
|
||||
}
|
||||
// if (ApkUtils.isAvailable(getCtx(), "com.jxw.zwpg")) {
|
||||
// DesktopIcon zwpgIcon = new DesktopIcon();
|
||||
// zwpgIcon.setIcon(getCtx().getDrawable(R.drawable.zwpg_icon));
|
||||
// zwpgIcon.setLable("作文批改");
|
||||
// zwpgIcon.setPackageName("com.jxw.zwpg");
|
||||
// desktopIcons.add(zwpgIcon);
|
||||
// }
|
||||
|
||||
// if (ApkUtils.isAvailable(getCtx(), "com.jxw.gb.zwpg")) {
|
||||
// DesktopIcon zwpgIcon = new DesktopIcon();
|
||||
@@ -86,25 +87,49 @@ public class AppViewModel extends BaseViewModel<FragmentAppBinding, FragmentEven
|
||||
// desktopIcons.add(zwpgIcon);
|
||||
// }
|
||||
|
||||
if (ApkUtils.isAvailable(getCtx(), "com.jxw.huiben")) {
|
||||
DesktopIcon zwpgIcon = new DesktopIcon();
|
||||
zwpgIcon.setIcon(getCtx().getDrawable(R.drawable.zhidu_icon));
|
||||
zwpgIcon.setLable("AR指读");
|
||||
zwpgIcon.setPackageName("com.jxw.huiben");
|
||||
desktopIcons.add(zwpgIcon);
|
||||
}
|
||||
// if (ApkUtils.isAvailable(getCtx(), "com.jxw.huiben")) {
|
||||
// DesktopIcon zwpgIcon = new DesktopIcon();
|
||||
// zwpgIcon.setIcon(getCtx().getDrawable(R.drawable.zhidu_icon));
|
||||
// zwpgIcon.setLable("AR指读");
|
||||
// zwpgIcon.setPackageName("com.jxw.huiben");
|
||||
// desktopIcons.add(zwpgIcon);
|
||||
// }
|
||||
|
||||
DesktopIcon exitIcon = new DesktopIcon();
|
||||
exitIcon.setLable("退出桌面");
|
||||
exitIcon.setPackageName(AppManager.DESKTOP_EXIT);
|
||||
exitIcon.setIcon(getCtx().getDrawable(R.drawable.exit_icon));
|
||||
desktopIcons.add(desktopIcons.size(), exitIcon);
|
||||
// DesktopIcon exitIcon = new DesktopIcon();
|
||||
// exitIcon.setLable("退出桌面");
|
||||
// exitIcon.setPackageName(AppManager.DESKTOP_EXIT);
|
||||
// exitIcon.setIcon(getCtx().getDrawable(R.drawable.exit_icon));
|
||||
// desktopIcons.add(desktopIcons.size(), exitIcon);
|
||||
|
||||
DesktopIcon desktopIcon = new DesktopIcon();
|
||||
desktopIcon.setLable("添加应用");
|
||||
desktopIcon.setPackageName(AppManager.ADD_NAME);
|
||||
desktopIcon.setIcon(getCtx().getDrawable(R.drawable.icon_add));
|
||||
desktopIcons.add(desktopIcons.size(), desktopIcon);
|
||||
DesktopIcon clockIcon = new DesktopIcon();
|
||||
clockIcon.setLable("时钟");
|
||||
clockIcon.setPackageName(OpenApkUtils.getInstance().getDeskClockPackageName());
|
||||
clockIcon.setIcon(ApkUtils.getAppDrawable(getCtx(), OpenApkUtils.getInstance().getDeskClockPackageName()));
|
||||
desktopIcons.add(clockIcon);
|
||||
|
||||
DesktopIcon calcIcon = new DesktopIcon();
|
||||
calcIcon.setLable("计算器");
|
||||
calcIcon.setPackageName(OpenApkUtils.getInstance().getCalculatorPackageName());
|
||||
calcIcon.setIcon(ApkUtils.getAppDrawable(getCtx(), OpenApkUtils.getInstance().getCalculatorPackageName()));
|
||||
desktopIcons.add(calcIcon);
|
||||
|
||||
DesktopIcon cameraIcon = new DesktopIcon();
|
||||
cameraIcon.setLable("相机");
|
||||
cameraIcon.setPackageName(OpenApkUtils.getInstance().getCameraPackageName());
|
||||
cameraIcon.setIcon(ApkUtils.getAppDrawable(getCtx(), OpenApkUtils.getInstance().getCameraPackageName()));
|
||||
desktopIcons.add(cameraIcon);
|
||||
|
||||
DesktopIcon galleryIcon = new DesktopIcon();
|
||||
galleryIcon.setLable("图库");
|
||||
galleryIcon.setPackageName(OpenApkUtils.getInstance().getGalleryPackageName());
|
||||
galleryIcon.setIcon(ApkUtils.getAppDrawable(getCtx(), OpenApkUtils.getInstance().getGalleryPackageName()));
|
||||
desktopIcons.add(galleryIcon);
|
||||
|
||||
DesktopIcon AddAppIcon = new DesktopIcon();
|
||||
AddAppIcon.setLable("添加应用");
|
||||
AddAppIcon.setPackageName(AppManager.ADD_NAME);
|
||||
AddAppIcon.setIcon(getCtx().getDrawable(R.drawable.icon_add));
|
||||
desktopIcons.add(desktopIcons.size(), AddAppIcon);
|
||||
|
||||
mDesktopIconListData.setValue(desktopIcons);
|
||||
}
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
package com.xwad.os.fragment.complex;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentPagerAdapter;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.viewpager2.adapter.FragmentStateAdapter;
|
||||
import androidx.viewpager2.widget.ViewPager2;
|
||||
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
@@ -30,7 +31,6 @@ import com.xwad.os.jxw.util.Util;
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
@@ -44,7 +44,7 @@ import java.util.List;
|
||||
public class ComplexFragment extends BaseMvvmFragment<ComplexViewModel, FragmentComplexBinding> {
|
||||
private static final String TAG = "ComplexFragment";
|
||||
|
||||
private Activity mContext;
|
||||
private FragmentActivity mContext;
|
||||
|
||||
private MyAdapter adapter;
|
||||
private TabTbxAdapter tabTbxAdapter;
|
||||
@@ -116,12 +116,21 @@ public class ComplexFragment extends BaseMvvmFragment<ComplexViewModel, Fragment
|
||||
}
|
||||
|
||||
mViewDataBinding.subjectViewPager.setOffscreenPageLimit(10);
|
||||
mViewDataBinding.subjectViewPager.setUserInputEnabled(false);
|
||||
mViewDataBinding.subjectViewPager.setOrientation(ViewPager2.ORIENTATION_VERTICAL);
|
||||
mViewDataBinding.subjectViewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
|
||||
@Override
|
||||
public void onPageSelected(int position) {
|
||||
mViewDataBinding.rvTitle.smoothScrollToPosition(position);
|
||||
}
|
||||
});
|
||||
|
||||
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
|
||||
linearLayoutManager.setOrientation(RecyclerView.VERTICAL);
|
||||
mViewDataBinding.rvTitle.setLayoutManager(linearLayoutManager);
|
||||
|
||||
tabTbxAdapter = new TabTbxAdapter(tabBeanList);
|
||||
adapter = new MyAdapter(getChildFragmentManager());
|
||||
adapter = new MyAdapter(mContext);
|
||||
|
||||
initViews();
|
||||
}
|
||||
@@ -218,26 +227,26 @@ public class ComplexFragment extends BaseMvvmFragment<ComplexViewModel, Fragment
|
||||
}
|
||||
|
||||
|
||||
public class MyAdapter extends FragmentPagerAdapter {
|
||||
MyAdapter(FragmentManager fragmentManager) {
|
||||
super(fragmentManager);
|
||||
public class MyAdapter extends FragmentStateAdapter {
|
||||
MyAdapter(FragmentActivity fragmentActivity) {
|
||||
super(fragmentActivity);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@NonNull
|
||||
@Override
|
||||
public Fragment getItem(int i) {
|
||||
return mFragment.get(i);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return mFragment.size();
|
||||
public Fragment createFragment(int position) {
|
||||
return mFragment.get(position);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getItemId(int i) {
|
||||
return (mFragment.get(i)).hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return mFragment == null ? 0 : mFragment.size();
|
||||
}
|
||||
}
|
||||
|
||||
public class TabTbxAdapter extends BaseQuickAdapter<TabBean, BaseViewHolder> {
|
||||
@@ -279,11 +288,10 @@ public class ComplexFragment extends BaseMvvmFragment<ComplexViewModel, Fragment
|
||||
}
|
||||
textView.setText(tabBean.getTab_Title());
|
||||
baseViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
setChoosePosition(baseViewHolder.getAdapterPosition());
|
||||
mViewDataBinding.subjectViewPager.setCurrentItem(baseViewHolder.getAdapterPosition());
|
||||
mViewDataBinding.subjectViewPager.setCurrentItem(baseViewHolder.getAdapterPosition(), false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import android.provider.Settings;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.view.ViewTreeObserver;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
@@ -126,6 +127,14 @@ public class MineFragment extends BaseMvvmFragment<MineViewModel, FragmentMineBi
|
||||
|
||||
setName();
|
||||
|
||||
// mViewDataBinding.ivXwcd.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
|
||||
// @Override
|
||||
// public void onGlobalLayout() {
|
||||
// Log.e(TAG, "onGlobalLayout: getWidth = " + mViewDataBinding.ivXwcd.getWidth());
|
||||
// Log.e(TAG, "onGlobalLayout: getHeight = " + mViewDataBinding.ivXwcd.getHeight());
|
||||
// }
|
||||
// });
|
||||
|
||||
// mViewDataBinding.gridViewId.setLayoutManager(new GridLayoutManager(mContext, 8));
|
||||
// zhMenuAdapter = new ZhMenuAdapter(mContext, mlistAppInfo);
|
||||
// mViewDataBinding.gridViewId.setAdapter(zhMenuAdapter);
|
||||
@@ -337,31 +346,6 @@ public class MineFragment extends BaseMvvmFragment<MineViewModel, FragmentMineBi
|
||||
}
|
||||
}
|
||||
|
||||
private List<ComponentName> getAllLauncherApps(Context context) {
|
||||
PackageManager packageManager = context.getPackageManager();
|
||||
|
||||
// 构建用于查询桌面应用的Intent
|
||||
Intent intent = new Intent(Intent.ACTION_MAIN);
|
||||
intent.addCategory(Intent.CATEGORY_HOME);
|
||||
|
||||
// 查询所有可以处理该Intent的Activity
|
||||
List<ResolveInfo> resolveInfoList = packageManager.queryIntentActivities(intent, PackageManager.MATCH_ALL);
|
||||
|
||||
List<ComponentName> launcherPackageList = resolveInfoList.stream().filter(new Predicate<ResolveInfo>() {
|
||||
@Override
|
||||
public boolean test(ResolveInfo resolveInfo) {
|
||||
return !BuildConfig.APPLICATION_ID.equals(resolveInfo.activityInfo.packageName);
|
||||
}
|
||||
}).map(new Function<ResolveInfo, ComponentName>() {
|
||||
@Override
|
||||
public ComponentName apply(ResolveInfo resolveInfo) {
|
||||
return resolveInfo.getComponentInfo().getComponentName();
|
||||
}
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
return launcherPackageList;
|
||||
}
|
||||
|
||||
public class BtnClick {
|
||||
public void toLigin(View view) {
|
||||
startActivity(new Intent(mContext, UserActivity.class));
|
||||
@@ -379,7 +363,6 @@ public class MineFragment extends BaseMvvmFragment<MineViewModel, FragmentMineBi
|
||||
}
|
||||
|
||||
public void exit(View view) {
|
||||
Log.e(TAG, "exit: " + getAllLauncherApps(mContext));
|
||||
startActivity(new Intent(mContext, ExitActivity.class));
|
||||
// OpenApkUtils.getInstance().openJxwApp(mContext, "com.hihonor.android.launcher,com.hihonor.android.launcher.unihome.UniHomeLauncher,,,退出桌面");
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.tencent.mmkv.MMKV;
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.adapter.AppAdapter;
|
||||
import com.xwad.os.base.mvvm.fragment.BaseMvvmFragment;
|
||||
import com.xwad.os.bean.jxw.AppInfo;
|
||||
import com.xwad.os.config.CommonConfig;
|
||||
@@ -54,17 +55,16 @@ import java.util.List;
|
||||
public class SafeFragment extends BaseMvvmFragment<SafeViewModel, FragmentSafeBinding> {
|
||||
private static final String TAG = "SafeFragment";
|
||||
|
||||
private Activity mContext;
|
||||
|
||||
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
|
||||
|
||||
private Activity mContext;
|
||||
private AppInfo addAppinfo;
|
||||
private ZhMenuAdapter zhMenuAdapter;
|
||||
private List<AppInfo> mlistAppInfo = new ArrayList<>();
|
||||
private Handler mHandler = new Handler();
|
||||
public String file_name = "app_list_6.0";
|
||||
int len = 0;
|
||||
|
||||
private PackageManager mPackageManager;
|
||||
|
||||
// TODO: Rename parameter arguments, choose names that match
|
||||
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
|
||||
@@ -113,6 +113,8 @@ public class SafeFragment extends BaseMvvmFragment<SafeViewModel, FragmentSafeBi
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
mPackageManager = mContext.getPackageManager();
|
||||
|
||||
if (!EventBus.getDefault().isRegistered(this)) {
|
||||
EventBus.getDefault().register(this);
|
||||
}
|
||||
@@ -239,10 +241,14 @@ public class SafeFragment extends BaseMvvmFragment<SafeViewModel, FragmentSafeBi
|
||||
return;
|
||||
}
|
||||
}
|
||||
PackageManager packageManager = mContext.getPackageManager();
|
||||
try {
|
||||
ApplicationInfo applicationInfo = packageManager.getApplicationInfo(stringExtra, PackageManager.GET_META_DATA);
|
||||
AppInfo build = new AppInfo.Builder().appLabel((String) packageManager.getApplicationLabel(applicationInfo)).pkgName(stringExtra).appIcon(packageManager.getApplicationIcon(applicationInfo)).build();
|
||||
ApplicationInfo applicationInfo = mPackageManager.getApplicationInfo(stringExtra, PackageManager.GET_META_DATA);
|
||||
AppInfo build = new AppInfo.Builder()
|
||||
.appLabel((String) mPackageManager.getApplicationLabel(applicationInfo))
|
||||
.pkgName(stringExtra)
|
||||
.appIcon(mPackageManager.getApplicationIcon(applicationInfo))
|
||||
.build();
|
||||
|
||||
mlistAppInfo.remove(addAppinfo);
|
||||
mlistAppInfo.add(build);
|
||||
mlistAppInfo.add(addAppinfo);
|
||||
@@ -257,7 +263,7 @@ public class SafeFragment extends BaseMvvmFragment<SafeViewModel, FragmentSafeBi
|
||||
|
||||
private void writeAppDate(String str) {
|
||||
try {
|
||||
FileOutputStream fileOutputStream = new FileOutputStream(mContext.getFileStreamPath("app_list_6.0"), true);
|
||||
FileOutputStream fileOutputStream = new FileOutputStream(mContext.getFileStreamPath(file_name), true);
|
||||
fileOutputStream.write((str + "\n").getBytes());
|
||||
fileOutputStream.flush();
|
||||
fileOutputStream.close();
|
||||
@@ -305,7 +311,9 @@ public class SafeFragment extends BaseMvvmFragment<SafeViewModel, FragmentSafeBi
|
||||
mlistAppInfo.add(build11);
|
||||
mlistAppInfo.add(build12);
|
||||
mlistAppInfo.add(build13);
|
||||
|
||||
getAppData();
|
||||
Log.e(TAG, "initAppData: " + mlistAppInfo);
|
||||
mHandler.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
@@ -322,13 +330,12 @@ public class SafeFragment extends BaseMvvmFragment<SafeViewModel, FragmentSafeBi
|
||||
}
|
||||
try {
|
||||
BufferedReader bufferedReader = new BufferedReader(new FileReader(fileStreamPath));
|
||||
PackageManager packageManager = mContext.getPackageManager();
|
||||
while (true) {
|
||||
String readLine = bufferedReader.readLine();
|
||||
if (readLine != null) {
|
||||
try {
|
||||
ApplicationInfo applicationInfo = packageManager.getApplicationInfo(readLine, PackageManager.GET_META_DATA);
|
||||
mlistAppInfo.add(new AppInfo.Builder().appLabel((String) packageManager.getApplicationLabel(applicationInfo)).pkgName(readLine).appIcon(packageManager.getApplicationIcon(applicationInfo)).build());
|
||||
ApplicationInfo applicationInfo = mPackageManager.getApplicationInfo(readLine, PackageManager.GET_META_DATA);
|
||||
mlistAppInfo.add(new AppInfo.Builder().appLabel((String) mPackageManager.getApplicationLabel(applicationInfo)).pkgName(readLine).appIcon(mPackageManager.getApplicationIcon(applicationInfo)).build());
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
@@ -269,6 +269,10 @@ public class OpenApkUtils {
|
||||
Toaster.show("应用未安装");
|
||||
return;
|
||||
}
|
||||
if (TextUtils.isEmpty(className)) {
|
||||
openApp(packageName);
|
||||
return;
|
||||
}
|
||||
if (isCloudLessonMod(packageName)) {
|
||||
if ("cn.wps.note".equals(packageName)) {
|
||||
ApkUtils.openPackage(mContext, packageName);
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 25 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 20 KiB |
BIN
app/src/main/res/drawable-xxhdpi/icon_login_sms_code_pre.png
Normal file
BIN
app/src/main/res/drawable-xxhdpi/icon_login_sms_code_pre.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 42 KiB |
13
app/src/main/res/drawable/icon_login_sms_code_selector.xml
Normal file
13
app/src/main/res/drawable/icon_login_sms_code_selector.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- 没有焦点时的背景颜色 -->
|
||||
<item android:drawable="@drawable/icon_login_sms_code" android:state_window_focused="false" />
|
||||
<!-- 非触摸模式下获得焦点并单击时的背景颜色 -->
|
||||
<item android:drawable="@drawable/icon_login_sms_code" android:state_focused="true" android:state_pressed="true" />
|
||||
<!-- 触摸模式下单击时的背景颜色 -->
|
||||
<item android:drawable="@drawable/icon_login_sms_code_pre" android:state_focused="false" android:state_pressed="true" />
|
||||
<!-- 选中时的背景颜色 -->
|
||||
<item android:drawable="@drawable/icon_login_sms_code" android:state_selected="true" />
|
||||
<!-- 获得焦点时的背景 颜色 -->
|
||||
<item android:drawable="@drawable/icon_login_sms_code" android:state_focused="true" />
|
||||
</selector>
|
||||
@@ -2,10 +2,13 @@
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:context=".activity.AddIconActivity">
|
||||
tools:context=".activity.addicon.AddIconActivity">
|
||||
|
||||
<data>
|
||||
|
||||
<variable
|
||||
name="click"
|
||||
type="com.xwad.os.activity.addicon.AddIconActivity.BtnClick" />
|
||||
</data>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
@@ -24,6 +27,7 @@
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:adjustViewBounds="true"
|
||||
android:onClick="@{click::exit}"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@drawable/exit"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
|
||||
@@ -203,7 +203,7 @@
|
||||
android:adjustViewBounds="true"
|
||||
android:onClick="@{click::getCode}"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@drawable/icon_login_sms_code"
|
||||
android:src="@drawable/icon_login_sms_code_selector"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
android:paddingEnd="8dp"
|
||||
android:text="@string/desktop_permission"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="14sp"
|
||||
android:textSize="@dimen/permission_text_size"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
@@ -44,7 +44,7 @@
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="64dp"
|
||||
android:layout_height="@dimen/permission_text_card_height"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
@@ -79,7 +79,7 @@
|
||||
android:maxLines="1"
|
||||
android:text="存储权限"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="14sp"
|
||||
android:textSize="@dimen/permission_text_size"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
android:maxLines="1"
|
||||
android:text="存储图片或视频"
|
||||
android:textColor="@color/contact_text_color"
|
||||
android:textSize="12sp"
|
||||
android:textSize="@dimen/permission_hint_text_size"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_name0" />
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
android:onClick="@{click::openStorage}"
|
||||
android:text="去授权"
|
||||
android:textColor="@drawable/tv_permission"
|
||||
android:textSize="13sp"
|
||||
android:textSize="@dimen/permission_setting_text_size"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
@@ -116,7 +116,7 @@
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="64dp"
|
||||
android:layout_height="@dimen/permission_text_card_height"
|
||||
android:layout_margin="8dp"
|
||||
android:background="@drawable/permission_card_background"
|
||||
android:visibility="gone">
|
||||
@@ -148,7 +148,7 @@
|
||||
android:maxLines="1"
|
||||
android:text="读取电话状态"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="14sp"
|
||||
android:textSize="@dimen/permission_text_size"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
@@ -160,7 +160,7 @@
|
||||
android:maxLines="1"
|
||||
android:text="拨打和管理通话"
|
||||
android:textColor="@color/contact_text_color"
|
||||
android:textSize="12sp"
|
||||
android:textSize="@dimen/permission_hint_text_size"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_name1" />
|
||||
|
||||
@@ -176,7 +176,7 @@
|
||||
android:onClick="@{click::openReadPhone}"
|
||||
android:text="去授权"
|
||||
android:textColor="@drawable/tv_permission"
|
||||
android:textSize="13sp"
|
||||
android:textSize="@dimen/permission_setting_text_size"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
@@ -185,7 +185,7 @@
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="64dp"
|
||||
android:layout_height="@dimen/permission_text_card_height"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
@@ -220,7 +220,7 @@
|
||||
android:maxLines="1"
|
||||
android:text="修改系统设置"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="14sp"
|
||||
android:textSize="@dimen/permission_text_size"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
@@ -232,7 +232,7 @@
|
||||
android:maxLines="1"
|
||||
android:text="设置亮度和声音"
|
||||
android:textColor="@color/contact_text_color"
|
||||
android:textSize="12sp"
|
||||
android:textSize="@dimen/permission_hint_text_size"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_name2" />
|
||||
|
||||
@@ -248,7 +248,7 @@
|
||||
android:onClick="@{click::openWriteSettings}"
|
||||
android:text="去授权"
|
||||
android:textColor="@drawable/tv_permission"
|
||||
android:textSize="13sp"
|
||||
android:textSize="@dimen/permission_setting_text_size"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
@@ -257,7 +257,7 @@
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="64dp"
|
||||
android:layout_height="@dimen/permission_text_card_height"
|
||||
android:layout_margin="8dp"
|
||||
android:background="@drawable/permission_card_background"
|
||||
android:visibility="gone">
|
||||
@@ -289,7 +289,7 @@
|
||||
android:maxLines="1"
|
||||
android:text="定位权限"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="14sp"
|
||||
android:textSize="@dimen/permission_text_size"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
@@ -301,7 +301,7 @@
|
||||
android:maxLines="1"
|
||||
android:text="获取粗略位置"
|
||||
android:textColor="@color/contact_text_color"
|
||||
android:textSize="12sp"
|
||||
android:textSize="@dimen/permission_hint_text_size"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_name3" />
|
||||
|
||||
@@ -317,7 +317,7 @@
|
||||
android:onClick="@{click::open_coarse_location}"
|
||||
android:text="去授权"
|
||||
android:textColor="@drawable/tv_permission"
|
||||
android:textSize="13sp"
|
||||
android:textSize="@dimen/permission_setting_text_size"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
@@ -326,7 +326,7 @@
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="64dp"
|
||||
android:layout_height="@dimen/permission_text_card_height"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
@@ -361,7 +361,7 @@
|
||||
android:maxLines="1"
|
||||
android:text="定位权限"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="14sp"
|
||||
android:textSize="@dimen/permission_text_size"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
@@ -373,7 +373,7 @@
|
||||
android:maxLines="1"
|
||||
android:text="获取精确位置"
|
||||
android:textColor="@color/contact_text_color"
|
||||
android:textSize="12sp"
|
||||
android:textSize="@dimen/permission_hint_text_size"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_name4" />
|
||||
|
||||
@@ -389,7 +389,7 @@
|
||||
android:onClick="@{click::open_fine_location}"
|
||||
android:text="去授权"
|
||||
android:textColor="@drawable/tv_permission"
|
||||
android:textSize="13sp"
|
||||
android:textSize="@dimen/permission_setting_text_size"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
@@ -398,7 +398,7 @@
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="64dp"
|
||||
android:layout_height="@dimen/permission_text_card_height"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
@@ -433,7 +433,7 @@
|
||||
android:maxLines="1"
|
||||
android:text="后台定位权限"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="14sp"
|
||||
android:textSize="@dimen/permission_text_size"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
@@ -445,7 +445,7 @@
|
||||
android:maxLines="1"
|
||||
android:text="查看设备位置"
|
||||
android:textColor="@color/contact_text_color"
|
||||
android:textSize="12sp"
|
||||
android:textSize="@dimen/permission_hint_text_size"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_name5" />
|
||||
|
||||
@@ -461,7 +461,7 @@
|
||||
android:onClick="@{click::open_background_location}"
|
||||
android:text="去授权"
|
||||
android:textColor="@drawable/tv_permission"
|
||||
android:textSize="13sp"
|
||||
android:textSize="@dimen/permission_setting_text_size"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
@@ -470,7 +470,7 @@
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="64dp"
|
||||
android:layout_height="@dimen/permission_text_card_height"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
@@ -505,7 +505,7 @@
|
||||
android:maxLines="1"
|
||||
android:text="通知权限"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="14sp"
|
||||
android:textSize="@dimen/permission_text_size"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
@@ -517,7 +517,7 @@
|
||||
android:maxLines="1"
|
||||
android:text="查看设备位置"
|
||||
android:textColor="@color/contact_text_color"
|
||||
android:textSize="12sp"
|
||||
android:textSize="@dimen/permission_hint_text_size"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_name6" />
|
||||
|
||||
@@ -533,7 +533,7 @@
|
||||
android:onClick="@{click::open_notification}"
|
||||
android:text="去授权"
|
||||
android:textColor="@drawable/tv_permission"
|
||||
android:textSize="13sp"
|
||||
android:textSize="@dimen/permission_setting_text_size"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
android:layout_marginTop="3dp"
|
||||
android:text="必备插件"
|
||||
android:text="必备组件"
|
||||
android:textColor="#333333"
|
||||
android:textSize="12sp" />
|
||||
|
||||
|
||||
@@ -1,8 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="475dp"
|
||||
android:layout_height="300dp"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/ll_zjx"
|
||||
@@ -459,3 +469,6 @@
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="510dp"
|
||||
android:layout_height="210dp"
|
||||
android:layout_width="555dp"
|
||||
android:layout_height="300dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
@@ -27,6 +27,7 @@
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/rv_app"
|
||||
style="@style/vertical_style"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:fadeScrollbars="false"
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<com.xwad.os.view.jxw.widget.NoSlideViewPager
|
||||
<androidx.viewpager2.widget.ViewPager2
|
||||
android:id="@+id/subject_viewPager"
|
||||
android:layout_width="475dp"
|
||||
android:layout_height="300dp"
|
||||
|
||||
@@ -710,7 +710,7 @@
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginTop="2dp"
|
||||
android:singleLine="true"
|
||||
android:text="必备插件"
|
||||
android:text="必备组件"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/mine_app_name_size"
|
||||
app:layout_constraintEnd_toEndOf="@+id/app_icon11"
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_icon"
|
||||
android:layout_width="36dp"
|
||||
android:layout_height="36dp"
|
||||
android:layout_width="44dp"
|
||||
android:layout_height="44dp"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginStart="4dp"
|
||||
android:layout_marginEnd="4dp"
|
||||
|
||||
@@ -3292,6 +3292,12 @@
|
||||
<dimen name="y999">999px</dimen>
|
||||
|
||||
<dimen name="mine_icon_height">36dp</dimen>
|
||||
<dimen name="mine_icon_width">56dp</dimen>
|
||||
<dimen name="mine_icon_width">48dp</dimen>
|
||||
<dimen name="mine_app_name_size">8sp</dimen>
|
||||
|
||||
<dimen name="permission_hint_text_size">10sp</dimen>
|
||||
<dimen name="permission_text_size">12sp</dimen>
|
||||
<dimen name="permission_text_card_height">48dp</dimen>
|
||||
<dimen name="permission_setting_text_size">11sp</dimen>
|
||||
|
||||
</resources>
|
||||
Reference in New Issue
Block a user