version:2.0.1.6_release
update:2020.07.14 fix:修复id管控冲突 add:安装完成后10.0添加桌面图标
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user