version:1.1.2

fix:
update:优化其他学科滑动问题,NoSlideViewPager替换为viewpager2,退出桌面获取已安装的
This commit is contained in:
2025-12-20 10:22:15 +08:00
parent 7ce4158afd
commit a66b04083d
29 changed files with 853 additions and 656 deletions

View File

@@ -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");
Intent intent = new Intent();
intent.setComponent(componentName);
startActivity(intent);
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) {

View File

@@ -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) {

View File

@@ -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();
}
}
}

View File

@@ -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() {
}
}

View File

@@ -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));

View File

@@ -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) {

View File

@@ -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;
}
}
holder.iv_icon.setImageDrawable(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 {
// 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) {

View File

@@ -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();

View File

@@ -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);
}

View File

@@ -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);
}
});
}

View File

@@ -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,,,退出桌面");
}

View File

@@ -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();
}

View File

@@ -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);