version:2.0.1.6_release

update:2020.07.14
fix:修复id管控冲突
add:安装完成后10.0添加桌面图标
This commit is contained in:
2020-07-14 18:54:49 +08:00
parent c6c025c225
commit f4cb8b96a4
8 changed files with 377 additions and 215 deletions

View File

@@ -7,9 +7,15 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageInstaller;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Binder;
import android.os.Build;
import android.provider.Settings;
import android.support.annotation.RequiresApi;
import android.support.v4.content.FileProvider;
import android.util.Log;
@@ -18,6 +24,7 @@ import android.widget.Toast;
import com.mjsheng.myappstore.BuildConfig;
import com.mjsheng.myappstore.R;
import com.mjsheng.myappstore.server.InitJpushServer;
import java.io.BufferedReader;
import java.io.DataOutputStream;
@@ -29,6 +36,7 @@ import java.io.OutputStream;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.List;
import java.util.zip.ZipEntry;
@@ -663,4 +671,81 @@ public class ApkUtils {
return true;
}
}
public static void getStartActivityName(Context mContext, String packagename) {
// 通过包名获取此APP详细信息包括Activities、services、versioncode、name等等
PackageInfo packageinfo = null;
PackageManager pm = mContext.getPackageManager();
try {
packageinfo = pm.getPackageInfo(packagename, 0);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
if (packageinfo == null) {
return;
}
// 创建一个类别为CATEGORY_LAUNCHER的该包名的Intent
Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
resolveIntent.setPackage(packageinfo.packageName);
// 通过getPackageManager()的queryIntentActivities方法遍历
List<ResolveInfo> resolveinfoList = pm.queryIntentActivities(resolveIntent, 0);
for (ResolveInfo resolveInfo : resolveinfoList) {
Log.d("", "resolveInfo:" + resolveInfo);
}
ResolveInfo resolveinfo = resolveinfoList.iterator().next();
if (resolveinfo != null) {
// packagename = 参数packname
String packageName = resolveinfo.activityInfo.packageName;
// 这个就是我们要找的该APP的LAUNCHER的Activity[组织形式packagename.mainActivityname]
String className = resolveinfo.activityInfo.name;
Drawable icon = resolveinfo.loadIcon(pm);
Bitmap APKicon;
if (icon instanceof BitmapDrawable) {
APKicon = ((BitmapDrawable) icon).getBitmap();
} else {
Bitmap bitmap = Bitmap.createBitmap(icon.getIntrinsicWidth(), icon.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
icon.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
icon.draw(canvas);
APKicon = bitmap;
}
Intent apkIntent = new Intent();
apkIntent.setClassName(packageName, className);
Intent shortcutIntent = new Intent("android.content.hr.action.shortcutsh");
shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON, APKicon);
shortcutIntent.putExtra("duplicate", false);
shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, resolveinfo.loadLabel(pm));
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, apkIntent);
shortcutIntent.setPackage("com.android.launcher3");
mContext.sendBroadcast(shortcutIntent);
}
}
public static void addShortcut(Context context, String packageList) {
String[] stringList = packageList.split(",");
List<String> packages = new ArrayList<>(Arrays.asList(stringList));
String installedList = "";
for (String s : packages) {
if (s.equals("com.jiaoguanyi.store") || s.equals("com.jiaoguanyi.appstore")) {
continue;
}
if (!ApkUtils.isAvailable(context, s)) {
continue;
}
// ApkUtils.getStartActivityName(context, s);
installedList += s + ",";
Log.e("addShortcut", s);
}
installedList = installedList.substring(0, installedList.length() - 1);
boolean qch_force_app = Settings.System.putString(context.getContentResolver(), "qch_launcher_icon_app", installedList);
// String old = Settings.System.getString(context.getContentResolver(), "qch_launcher_icon_app");
// Log.e("addShortcut", old);
Log.e("addShortcut", "putstring:" + qch_force_app);
}
}