From f4cb8b96a4693d3efd72e36ef18ddc3b9f477af2 Mon Sep 17 00:00:00 2001 From: Administrator <981964879@qq.com> Date: Tue, 14 Jul 2020 18:54:49 +0800 Subject: [PATCH] =?UTF-8?q?version:2.0.1.6=5Frelease=20update:2020.07.14?= =?UTF-8?q?=20fix:=E4=BF=AE=E5=A4=8Did=E7=AE=A1=E6=8E=A7=E5=86=B2=E7=AA=81?= =?UTF-8?q?=20add:=E5=AE=89=E8=A3=85=E5=AE=8C=E6=88=90=E5=90=8E10.0?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=A1=8C=E9=9D=A2=E5=9B=BE=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 40 ++- .../com/mjsheng/myappstore/MyApplication.java | 1 + .../myappstore/activity/MainActivity.java | 326 +++++++++--------- .../myappstore/receiver/BootReceiver.java | 4 +- .../myappstore/receiver/MyJPushReceiver.java | 8 +- .../myappstore/receiver/NewAppReceiver.java | 31 +- .../myappstore/server/InitJpushServer.java | 97 ++++-- .../mjsheng/myappstore/utils/ApkUtils.java | 85 +++++ 8 files changed, 377 insertions(+), 215 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 03df107..25c3df0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -7,13 +7,13 @@ - - + + - - - + + + - + @@ -85,7 +87,9 @@ + android:exported="true" + android:permission="com.example.broadcast.permission"> + @@ -110,17 +114,17 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/app/src/main/java/com/mjsheng/myappstore/MyApplication.java b/app/src/main/java/com/mjsheng/myappstore/MyApplication.java index 39499e9..a2cf1c8 100644 --- a/app/src/main/java/com/mjsheng/myappstore/MyApplication.java +++ b/app/src/main/java/com/mjsheng/myappstore/MyApplication.java @@ -202,6 +202,7 @@ public class MyApplication extends MultiDexApplication { filter.addAction(Intent.ACTION_PACKAGE_ADDED); filter.addAction(Intent.ACTION_PACKAGE_REPLACED); filter.addAction(Intent.ACTION_PACKAGE_REMOVED); + filter.addDataScheme("package"); registerReceiver(mNewAppReceiver, filter); } diff --git a/app/src/main/java/com/mjsheng/myappstore/activity/MainActivity.java b/app/src/main/java/com/mjsheng/myappstore/activity/MainActivity.java index b64fd64..40ceba2 100644 --- a/app/src/main/java/com/mjsheng/myappstore/activity/MainActivity.java +++ b/app/src/main/java/com/mjsheng/myappstore/activity/MainActivity.java @@ -86,6 +86,7 @@ import com.mjsheng.myappstore.utils.update.NotificationDownloadCreator; import com.mjsheng.myappstore.utils.update.OkhttpCheckWorker; import com.mjsheng.myappstore.utils.update.ToastCallback; +import org.json.JSONException; import org.json.JSONObject; import org.lzh.framework.updatepluginlib.UpdateBuilder; @@ -171,7 +172,7 @@ public class MainActivity extends AppCompatActivity { sequence++; tagAliasBean.alias = Utils.getSerial(); tagAliasBean.isAliasAction = true; - TagAliasOperatorHelper.getInstance().handleAction(getApplicationContext(), sequence, tagAliasBean); + TagAliasOperatorHelper.getInstance().handleAction(MainActivity.this, sequence, tagAliasBean); } @Override @@ -244,7 +245,7 @@ public class MainActivity extends AppCompatActivity { synchronized public void sendMACaddress() { String devices_version = Utils.getProperty("ro.custom.build.version", "获取失败"); - String rid = JPushInterface.getRegistrationID(getApplicationContext()); + String rid = JPushInterface.getRegistrationID(MainActivity.this); OkGo.post(Configure.SEND_DEVICES) .params("sn", Utils.getSerial()) .params("mac", com.blankj.utilcode.util.DeviceUtils.getMacAddress()) @@ -489,17 +490,17 @@ public class MainActivity extends AppCompatActivity { Log.e("ttlocked", String.valueOf(lock)); if (lock == 0) { locked = false; - boolean se = Settings.System.putInt(getApplicationContext().getContentResolver(), "qch_unlock_ipad", 1); - Log.e("ttlocked1", "getLockedState---------" + Settings.System.getString(getApplicationContext().getContentResolver(), "qch_unlock_ipad")); + boolean se = Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_unlock_ipad", 1); + Log.e("ttlocked1", "getLockedState---------" + Settings.System.getString(MainActivity.this.getContentResolver(), "qch_unlock_ipad")); Log.e("ttlocked1", "qch_unlock_ipad---------" + locked + se); } else { locked = true; - Settings.System.putInt(getApplicationContext().getContentResolver(), "qch_unlock_ipad", 0); + Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_unlock_ipad", 0); Log.e("ttlocked2", "qch_unlock_ipad---------" + locked); - String a = Settings.System.getString(getApplicationContext().getContentResolver(), "DeselectBrowserArray"); + String a = Settings.System.getString(MainActivity.this.getContentResolver(), "DeselectBrowserArray"); Log.e("ttlocked2", "DeselectBrowserArray---------" + a); - String b = Settings.System.getString(getApplicationContext().getContentResolver(), "qch_webblack_url"); + String b = Settings.System.getString(MainActivity.this.getContentResolver(), "qch_webblack_url"); Log.e("ttlocked2", "qch_webblack_url---------" + b); HTTPInterface.setJpushTags(MainActivity.this); sendMACaddress(); @@ -586,17 +587,17 @@ public class MainActivity extends AppCompatActivity { tv_batch.setVisibility(View.VISIBLE); tv_batch.setText(info.getBatch()); } -// try { - if (info.getClasses().equals("")) { - layout_class.setVisibility(View.GONE); - tv_class.setText("暂无信息"); - } else { - layout_class.setVisibility(View.VISIBLE); - tv_class.setText(info.getClasses()); + try { + if (info.getClasses().equals("")) { + layout_class.setVisibility(View.GONE); + tv_class.setText("暂无信息"); + } else { + layout_class.setVisibility(View.VISIBLE); + tv_class.setText(info.getClasses()); + } + } catch (Exception e) { + Log.e("fht", e.getMessage()); } -// } catch (Exception e) { -// Log.e("fht", e.getMessage()); -// } if (info.getSno().equals("")) { layout_number.setVisibility(View.GONE); tv_number.setText("暂无信息"); @@ -691,7 +692,7 @@ public class MainActivity extends AppCompatActivity { } - private Runnable toast = new Runnable() { + private Runnable toast = new Runnable() { @Override public void run() { @@ -704,7 +705,7 @@ public class MainActivity extends AppCompatActivity { BatteryManager batteryManager = (BatteryManager) getSystemService(BATTERY_SERVICE); return batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY); } else { - Intent intent = new ContextWrapper(getApplicationContext()). + Intent intent = new ContextWrapper(MainActivity.this). registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); return (intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) * 100) / intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1); @@ -785,7 +786,7 @@ public class MainActivity extends AppCompatActivity { @Override public void onError(Throwable e) { -// Utils.showToast(getApplicationContext(), "网络出错!"); +// Utils.showToast(MainActivity.this, "网络出错!"); Log.e("mjsheng", "brankPicApi---error----" + e.getMessage()); } @@ -922,7 +923,7 @@ public class MainActivity extends AppCompatActivity { private void initJpush() { JPushInterface.init(this); setAlias(); - String rid = JPushInterface.getRegistrationID(getApplicationContext()); + String rid = JPushInterface.getRegistrationID(MainActivity.this); if (!rid.isEmpty()) { // ToastUtil.debugShow("RegId:" + rid); Log.e("jiguang", "RegId:" + rid); @@ -1087,7 +1088,8 @@ public class MainActivity extends AppCompatActivity { case 200: JSONObject data = jsonObject.getJSONObject("data"); String ids = data.optString("ids"); - writeDeselectIDtoSystem(ids); + String packages = data.optString("package"); + writeDeselectIDtoSystem(ids,packages); break; default: Log.e("mjhseng", "getDeselectID---code is -200"); @@ -1453,7 +1455,7 @@ public class MainActivity extends AppCompatActivity { Utils.writeDisableUpdateList(this, upgrade_not.split(","), upgrade_ok.split(",")); LogUtils.e("launch:" + launch + "-----------net_ok:" + net_ok + "-----------net_not:" + net_not); - boolean qch_app_power_on = Settings.System.putString(getApplicationContext().getContentResolver(), "qch_app_power_on", launch); + boolean qch_app_power_on = Settings.System.putString(MainActivity.this.getContentResolver(), "qch_app_power_on", launch); // Intent netControlIntent = new Intent(CommonDatas.ACTION_HrReceiver_JGY_DIS); // netControlIntent.putExtra("package_name", net_not); @@ -1497,14 +1499,27 @@ public class MainActivity extends AppCompatActivity { } } - private void writeDeselectIDtoSystem(String ids) { - if (!TextUtils.isEmpty(ids)) { - boolean deselectViewArray = Settings.System.putString(getContentResolver(), "DeselectViewArray", ids); - Log.e("SystemSetting", "deselectViewArray---------" + deselectViewArray); + //应用id管控 + private void writeDeselectIDtoSystem(String s1, String result) { + if (!TextUtils.isEmpty(s1) && !TextUtils.isEmpty(result)) { + String appstore = "com.jiaoguanyi.appstore"; + String store = "com.jiaoguanyi.store"; + LogUtils.e(result); + if (!result.contains(appstore)) { + result = result + "," + appstore; + } + if (!result.contains(store)) { + result = result + "," + store; + } + String olddeselectViewArray = Settings.System.getString(this.getContentResolver(), "qch_app_forbid_id"); + Log.e("SystemSetting", "olddeselectViewArray---------" + olddeselectViewArray); + Settings.System.putString(this.getContentResolver(), "qch_app_forbid_id", result); + Settings.System.putString(this.getContentResolver(), "DeselectViewArray", s1); + Log.e("qch_app_forbid_id", "qch_app_forbid_id---------" + result); + Log.e("SystemSetting", "deselectViewArray---------" + s1); } else { - boolean deselectViewArray = Settings.System.putString(getContentResolver(), "DeselectViewArray", "Invalid"); - Log.e("mjsheng", "writeDeselectIDtoSystem is null:"); + Settings.System.putString(this.getContentResolver(), "DeselectViewArray", "Invalid"); } } @@ -1535,9 +1550,12 @@ public class MainActivity extends AppCompatActivity { Log.e("mjhseng", "getSystemSetting---code is -200"); break; } - } catch (Exception e) { - Log.e("mjhseng", "getSystemSetting---wroing----" + e.getMessage()); + } catch (IOException e) { e.printStackTrace(); + Log.e("initmjsheng", "1getSystemSetting---IOException----" + e.getMessage()); + } catch (JSONException e) { + e.printStackTrace(); + Log.e("initmjsheng", "1getSystemSetting---JSONException----" + e.getMessage()); } } @@ -1554,52 +1572,52 @@ public class MainActivity extends AppCompatActivity { } private void SettingSysData(JSONObject data) { - try { - int setting_call = changeNum(data.optInt("setting_call")); - boolean qch_call_forbid = Settings.System.putInt(getContentResolver(), "qch_call_forbid", setting_call); - Log.e("SystemSetting", "qch_call_forbid---------" + qch_call_forbid); +// try { + int setting_call = changeNum(data.optInt("setting_call")); + boolean qch_call_forbid = Settings.System.putInt(getContentResolver(), "qch_call_forbid", setting_call); + Log.e("SystemSetting", "qch_call_forbid---------" + qch_call_forbid); - int setting_phone = changeNum(data.optInt("setting_phone")); - boolean qch_white_list_on = Settings.System.putInt(getContentResolver(), "qch_white_list_on", setting_phone); - Log.e("SystemSetting", "qch_white_list_on---------" + qch_white_list_on); + int setting_phone = changeNum(data.optInt("setting_phone")); + boolean qch_white_list_on = Settings.System.putInt(getContentResolver(), "qch_white_list_on", setting_phone); + Log.e("SystemSetting", "qch_white_list_on---------" + qch_white_list_on); - String setting_phones = data.optString("setting_phones"); - boolean qch_white_list_Array = Settings.System.putString(getContentResolver(), "qch_white_list_Array", setting_phones); - // ToastTool.show("qch_call_forbid::"+setting_call+"----setting_phones::"+setting_phones+"----"+qch_white_list_Array+"---"+qch_call_forbid); - Log.e("SystemSetting", "qch_white_list_Array---------" + qch_white_list_Array + "---" + setting_phones); + String setting_phones = data.optString("setting_phones"); + boolean qch_white_list_Array = Settings.System.putString(getContentResolver(), "qch_white_list_Array", setting_phones); + // ToastTool.show("qch_call_forbid::"+setting_call+"----setting_phones::"+setting_phones+"----"+qch_white_list_Array+"---"+qch_call_forbid); + Log.e("SystemSetting", "qch_white_list_Array---------" + qch_white_list_Array + "---" + setting_phones); - int setting_memory = changeNum(data.optInt("setting_memory")); - boolean qch_sdcard_forbid_on = Settings.System.putInt(getContentResolver(), "qch_sdcard_forbid_on", setting_memory); - Log.e("SystemSetting", "qch_sdcard_forbid_on---------" + qch_sdcard_forbid_on); + int setting_memory = changeNum(data.optInt("setting_memory")); + boolean qch_sdcard_forbid_on = Settings.System.putInt(getContentResolver(), "qch_sdcard_forbid_on", setting_memory); + Log.e("SystemSetting", "qch_sdcard_forbid_on---------" + qch_sdcard_forbid_on); - //USB数据功能管控 - //仅充电:usb_charge - //MTP模式:usb_mtp - //Midi模式:usb_midi - String setting_usb = data.optString("setting_usb"); - if (!BuildConfig.DEBUG) { - boolean qch_usb_choose = Settings.System.putString(getContentResolver(), "qch_usb_choose", setting_usb); - Log.e("SystemSetting", "qch_usb_choose---------" + qch_usb_choose); - String usbStatus = ""; - switch (setting_usb) { - case "usb_charge": - usbStatus = "qch_action_usb_usb_charge"; - break; - case "usb_mtp": - usbStatus = "qch_action_usb_usb_mtp"; - break; - case "usb_midi": - usbStatus = "qch_action_usb_usb_midi"; - break; + //USB数据功能管控 + //仅充电:usb_charge + //MTP模式:usb_mtp + //Midi模式:usb_midi + String setting_usb = data.optString("setting_usb"); + if (!BuildConfig.DEBUG) { + boolean qch_usb_choose = Settings.System.putString(getContentResolver(), "qch_usb_choose", setting_usb); + Log.e("SystemSetting", "qch_usb_choose---------" + qch_usb_choose); + String usbStatus = ""; + switch (setting_usb) { + case "usb_charge": + usbStatus = "qch_action_usb_usb_charge"; + break; + case "usb_mtp": + usbStatus = "qch_action_usb_usb_mtp"; + break; + case "usb_midi": + usbStatus = "qch_action_usb_usb_midi"; + break; - } - Intent usbIntent = new Intent(usbStatus).setPackage("com.android.settings"); - sendBroadcast(usbIntent); } + Intent usbIntent = new Intent(usbStatus).setPackage("com.android.settings"); + sendBroadcast(usbIntent); + } - //otg开关 + //otg开关 // int setting_otg = changeNum(data.optInt("setting_otg")); // Log.e("SystemSetting", "setting_otg---------" + setting_otg); // String otgStatus = ""; @@ -1614,96 +1632,96 @@ public class MainActivity extends AppCompatActivity { // Intent otgIntent = new Intent(otgStatus); // sendBroadcast(otgIntent); - //蓝牙开关 - int setting_bluetooth = changeNum(data.optInt("setting_bluetooth")); - boolean qch_bt_forbid_on = Settings.System.putInt(getContentResolver(), "qch_bt_forbid_on", setting_bluetooth); - Log.e("SystemSetting", "qch_bt_forbid_on---------" + qch_bt_forbid_on); - Log.e("SystemSetting", "qch_bt_forbid_on---------" + Settings.System.getInt(getContentResolver(), "qch_bt_forbid_on", 0)); + //蓝牙开关 + int setting_bluetooth = changeNum(data.optInt("setting_bluetooth")); + boolean qch_bt_forbid_on = Settings.System.putInt(getContentResolver(), "qch_bt_forbid_on", setting_bluetooth); + Log.e("SystemSetting", "qch_bt_forbid_on---------" + qch_bt_forbid_on); + Log.e("SystemSetting", "qch_bt_forbid_on---------" + Settings.System.getInt(getContentResolver(), "qch_bt_forbid_on", 0)); - //系统导航条显示开关 - int setting_navigation = changeNum(data.optInt("setting_navigation")); - boolean qch_hide_navigationBar = Settings.System.putInt(getContentResolver(), "qch_hide_NavigationBar", setting_navigation); - Log.e("SystemSetting", "qch_hide_navigationBar---------" + qch_hide_navigationBar); + //系统导航条显示开关 + int setting_navigation = changeNum(data.optInt("setting_navigation")); + boolean qch_hide_navigationBar = Settings.System.putInt(getContentResolver(), "qch_hide_NavigationBar", setting_navigation); + Log.e("SystemSetting", "qch_hide_navigationBar---------" + qch_hide_navigationBar); - String navigationStatus = ""; - switch (setting_navigation) { - case 0: - navigationStatus = "qch_show_NavigationBar"; - break; - case 1: - navigationStatus = "qch_hide_NavigationBar"; - break; + String navigationStatus = ""; + switch (setting_navigation) { + case 0: + navigationStatus = "qch_show_NavigationBar"; + break; + case 1: + navigationStatus = "qch_hide_NavigationBar"; + break; - } - Intent navIntent = new Intent(navigationStatus).setPackage("com.android.systemui"); - sendBroadcast(navIntent); - - - //状态栏显示开关 - int setting_statusbar = changeNum(data.optInt("setting_statusbar")); - int oldNum = Settings.System.getInt(mContext.getContentResolver(), "qch_hide_statusBar", 0); - if (oldNum != setting_statusbar) { - boolean qch_hide_statusBar = Settings.System.putInt(mContext.getContentResolver(), "qch_hide_statusBar", setting_statusbar); - Log.e("SystemSetting", "qch_hide_statusBar---------" + qch_hide_statusBar); - String statusbarStatus = ""; - switch (setting_statusbar) { - case 0: - statusbarStatus = "qch_show_statusBar"; - break; - case 1: - statusbarStatus = "qch_hide_statusBar"; - break; - } - Intent statusIntent = new Intent(statusbarStatus).setPackage("com.android.systemui"); - mContext.sendBroadcast(statusIntent); - } - - //摄像头开关 - int setting_camera = changeNum(data.optInt("setting_camera")); - Log.e("SystemSetting", "setting_camera---------" + setting_camera); - String cameraStatus = ""; - switch (setting_camera) { - case 0: - cameraStatus = "qch_camera_open"; - break; - case 1: - cameraStatus = "qch_camera_forbid"; - break; - } - Intent cameraIntent = new Intent(cameraStatus).setPackage("com.android.settings"); - sendBroadcast(cameraIntent); - - //added:2019.12.6 - //设置5个app的开关 - //时钟 - int deskclock = changeNum(data.optInt("setting_clock")); - Settings.System.putInt(getApplicationContext().getContentResolver(), "qch_app_deskclock", deskclock); - Log.e("SystemSetting", "qch_app_deskclock" + deskclock); - //录音机 - int soundrecorder = changeNum(data.optInt("setting_recording")); - Settings.System.putInt(getApplicationContext().getContentResolver(), "qch_app_soundrecorder", soundrecorder); - Log.e("SystemSetting", "qch_app_soundrecorder" + soundrecorder); - //音乐 - int music = changeNum(data.optInt("setting_music")); - Settings.System.putInt(getApplicationContext().getContentResolver(), "qch_app_music", music); - Log.e("SystemSetting", "qch_app_music" + music); - //图库 - int gallery = changeNum(data.optInt("setting_picture")); - Settings.System.putInt(getApplicationContext().getContentResolver(), "qch_app_gallery", gallery); - Log.e("SystemSetting", "qch_app_gallery" + gallery); - //壁纸 - int wallpaper = changeNum(data.optInt("setting_wallpaper")); - Settings.System.putInt(getApplicationContext().getContentResolver(), "qch_app_wallpaper", wallpaper); - Log.e("SystemSetting", "qch_app_wallpaper" + wallpaper); - //文件管理器 - int filemanager = changeNum(data.optInt("setting_file")); - Settings.System.putInt(getApplicationContext().getContentResolver(), "qch_app_filemanager", filemanager); - Log.e("SystemSetting", "qch_app_filemanager" + filemanager); - - } catch (Exception e) { - e.printStackTrace(); - Log.e("mjhseng", "SettingSysData---error::" + e.getMessage()); } + Intent navIntent = new Intent(navigationStatus).setPackage("com.android.systemui"); + sendBroadcast(navIntent); + + + //状态栏显示开关 + int setting_statusbar = changeNum(data.optInt("setting_statusbar")); + int oldNum = Settings.System.getInt(MainActivity.this.getContentResolver(), "qch_hide_statusBar", 0); + if (oldNum != setting_statusbar) { + boolean qch_hide_statusBar = Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_hide_statusBar", setting_statusbar); + Log.e("SystemSetting", "qch_hide_statusBar---------" + qch_hide_statusBar); + String statusbarStatus = ""; + switch (setting_statusbar) { + case 0: + statusbarStatus = "qch_show_statusBar"; + break; + case 1: + statusbarStatus = "qch_hide_statusBar"; + break; + } + Intent statusIntent = new Intent(statusbarStatus).setPackage("com.android.systemui"); + MainActivity.this.sendBroadcast(statusIntent); + } + + //摄像头开关 + int setting_camera = changeNum(data.optInt("setting_camera")); + Log.e("SystemSetting", "setting_camera---------" + setting_camera); + String cameraStatus = ""; + switch (setting_camera) { + case 0: + cameraStatus = "qch_camera_open"; + break; + case 1: + cameraStatus = "qch_camera_forbid"; + break; + } + Intent cameraIntent = new Intent(cameraStatus).setPackage("com.android.settings"); + sendBroadcast(cameraIntent); + + //added:2019.12.6 + //设置5个app的开关 + //时钟 + int deskclock = changeNum(data.optInt("setting_clock")); + Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_app_deskclock", deskclock); + Log.e("SystemSetting", "qch_app_deskclock" + deskclock); + //录音机 + int soundrecorder = changeNum(data.optInt("setting_recording")); + Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_app_soundrecorder", soundrecorder); + Log.e("SystemSetting", "qch_app_soundrecorder" + soundrecorder); + //音乐 + int music = changeNum(data.optInt("setting_music")); + Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_app_music", music); + Log.e("SystemSetting", "qch_app_music" + music); + //图库 + int gallery = changeNum(data.optInt("setting_picture")); + Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_app_gallery", gallery); + Log.e("SystemSetting", "qch_app_gallery" + gallery); + //壁纸 + int wallpaper = changeNum(data.optInt("setting_wallpaper")); + Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_app_wallpaper", wallpaper); + Log.e("SystemSetting", "qch_app_wallpaper" + wallpaper); + //文件管理器 + int filemanager = changeNum(data.optInt("setting_file")); + Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_app_filemanager", filemanager); + Log.e("SystemSetting", "qch_app_filemanager" + filemanager); + +// } catch (Exception e) { +// e.printStackTrace(); +// Log.e("mjhseng", "SettingSysData---2error::" + e.getMessage()); +// } } private int changeNum(int status) { diff --git a/app/src/main/java/com/mjsheng/myappstore/receiver/BootReceiver.java b/app/src/main/java/com/mjsheng/myappstore/receiver/BootReceiver.java index 8c93478..91837de 100644 --- a/app/src/main/java/com/mjsheng/myappstore/receiver/BootReceiver.java +++ b/app/src/main/java/com/mjsheng/myappstore/receiver/BootReceiver.java @@ -52,7 +52,9 @@ public class BootReceiver extends BroadcastReceiver { } private void startService(Context context) { - context.startService(new Intent(context, InitJpushServer.class)); + Intent intent=new Intent(context, InitJpushServer.class); +// intent.putExtra("boot","BOOT_COMPLETED"); + context.startService(intent); context.startService(new Intent(context, StepService.class)); context.startService(new Intent(context, GuardService.class)); context.startService(new Intent(context, MyDownloadService.class)); diff --git a/app/src/main/java/com/mjsheng/myappstore/receiver/MyJPushReceiver.java b/app/src/main/java/com/mjsheng/myappstore/receiver/MyJPushReceiver.java index d1487ea..9ab314d 100644 --- a/app/src/main/java/com/mjsheng/myappstore/receiver/MyJPushReceiver.java +++ b/app/src/main/java/com/mjsheng/myappstore/receiver/MyJPushReceiver.java @@ -440,7 +440,7 @@ public class MyJPushReceiver extends BroadcastReceiver { Log.e("SystemSetting", "qch_app_filemanager" + filemanager); } catch (Exception e) { e.printStackTrace(); - Log.e("mjhseng", "SettingSysData---error::" + e.getMessage()); + Log.e("mjhseng", "SettingSysData---3error::" + e.getMessage()); } } @@ -901,9 +901,11 @@ public class MyJPushReceiver extends BroadcastReceiver { if (!result.contains(store)) { result = result + "," + store; } - Settings.System.putString(this.mContext.getContentResolver(), "qch_app_forbid", result); + String olddeselectViewArray = Settings.System.getString(this.mContext.getContentResolver(), "qch_app_forbid_id"); + Log.e("SystemSetting", "olddeselectViewArray---------" + olddeselectViewArray); + Settings.System.putString(this.mContext.getContentResolver(), "qch_app_forbid_id", result); Settings.System.putString(this.mContext.getContentResolver(), "DeselectViewArray", s1); - Log.e("qch_app_forbid", "qch_app_forbid---------" + result); + Log.e("qch_app_forbid_id", "qch_app_forbid_id---------" + result); Log.e("SystemSetting", "deselectViewArray---------" + s1); return; } else { diff --git a/app/src/main/java/com/mjsheng/myappstore/receiver/NewAppReceiver.java b/app/src/main/java/com/mjsheng/myappstore/receiver/NewAppReceiver.java index c540945..2b630b4 100644 --- a/app/src/main/java/com/mjsheng/myappstore/receiver/NewAppReceiver.java +++ b/app/src/main/java/com/mjsheng/myappstore/receiver/NewAppReceiver.java @@ -7,6 +7,7 @@ import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.os.Build; +import android.provider.Settings; import android.util.Log; import com.google.gson.Gson; @@ -43,17 +44,26 @@ public class NewAppReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { action = intent.getAction(); + Log.e("onReceive", action); //接收安装广播 if (action.equals(Intent.ACTION_PACKAGE_ADDED) || action.equals(Intent.ACTION_PACKAGE_REPLACED)) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - Intent intent1 = new Intent(BootReceiver.BOOT_COMPLETED); - intent1.setComponent(new ComponentName("com.jiaoguanyi.store", "com.mjsheng.myappstore.receiver.BootReceiver")); - context.sendBroadcast(intent1); - } + Intent allIntent = new Intent(); allIntent.setAction(Utils.DOWNLOAD_ALLTASK_ACTION); context.sendBroadcast(allIntent); String packageName = intent.getDataString().replace("package:", ""); + String result = Settings.System.getString(context.getContentResolver(), "qch_app_forbid"); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + if (!packageName.equals("com.jiaoguanyi.store") || !packageName.equals("com.jiaoguanyi.appstore")) { +// ApkUtils.getStartActivityName(context, packageName); + ApkUtils.addShortcut(context, result); + } + Intent intent1 = new Intent(BootReceiver.BOOT_COMPLETED); + intent1.setComponent(new ComponentName("com.jiaoguanyi.store", "com.mjsheng.myappstore.receiver.BootReceiver")); + context.sendBroadcast(intent1); + } + // MyApplication.getInstance().removeDate(packageName); Log.e(TAG, "安装了:" + packageName + "包名的程序"); Log.e("fht", "安装了:" + packageName + "包名的程序"); @@ -96,6 +106,17 @@ public class NewAppReceiver extends BroadcastReceiver { if (!packageName.equals(Utils.YOUNGSYSTEM_APP_TONGBU) && !packageName.equals(context.getPackageName())) { deletedateUserApp(context, packageName); } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + String result = Settings.System.getString(context.getContentResolver(), "qch_app_forbid"); + if (!packageName.equals("com.jiaoguanyi.store") || !packageName.equals("com.jiaoguanyi.appstore")) { +// ApkUtils.getStartActivityName(context, packageName); + ApkUtils.addShortcut(context, result); + } + Intent intent1 = new Intent(BootReceiver.BOOT_COMPLETED); + intent1.setComponent(new ComponentName("com.jiaoguanyi.store", "com.mjsheng.myappstore.receiver.BootReceiver")); + context.sendBroadcast(intent1); + } Intent intent1 = new Intent(); intent1.setAction(Utils.ACTION_PACKAGE_REMOVED); intent1.putExtra("packageName", packageName); diff --git a/app/src/main/java/com/mjsheng/myappstore/server/InitJpushServer.java b/app/src/main/java/com/mjsheng/myappstore/server/InitJpushServer.java index e413c22..8b59bfc 100644 --- a/app/src/main/java/com/mjsheng/myappstore/server/InitJpushServer.java +++ b/app/src/main/java/com/mjsheng/myappstore/server/InitJpushServer.java @@ -1,6 +1,7 @@ package com.mjsheng.myappstore.server; import android.app.Service; +import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; @@ -46,6 +47,7 @@ import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -85,12 +87,18 @@ public class InitJpushServer extends Service { public void onCreate() { Log.e("InitJpushServer", "onCreate"); super.onCreate(); + // android.os.Debug.waitForDebugger(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { +// String boot = intent.getStringExtra("boot"); +// if (null != boot&&boot.equals("BOOT_COMPLETED")) { +// String result = Settings.System.getString(getContentResolver(), "qch_app_forbid"); +// addShortcut(this, result);//开机之后添加图标到桌面 +// } getAppLimitApi();//获取可以写入的app包名 HTTPInterface.getNetAndLaunchSetting(this); timerImitate(); @@ -106,7 +114,7 @@ public class InitJpushServer extends Service { sequence++; tagAliasBean.alias = Utils.getSerial(); tagAliasBean.isAliasAction = true; - TagAliasOperatorHelper.getInstance().handleAction(getApplicationContext(), sequence, tagAliasBean); + TagAliasOperatorHelper.getInstance().handleAction(InitJpushServer.this, sequence, tagAliasBean); // JPushInterface.setAlias(this, Utils.getSerial(), new TagAliasCallback() { // @Override // public void gotResult(int i, String s, Set set) { @@ -172,7 +180,8 @@ public class InitJpushServer extends Service { case 200: JSONObject data = jsonObject.getJSONObject("data"); String ids = data.optString("ids"); - writeDeselectIDtoSystem(ids); + String packages = data.optString("package"); + writeDeselectIDtoSystem(ids, packages); break; default: Log.e("initmjsheng", "getDeselectID---code is -200"); @@ -290,6 +299,7 @@ public class InitJpushServer extends Service { } private void writeAppPackageList(String result) { + ApkUtils. addShortcut(this, result);//开机之后添加图标到桌面 String appstore = "com.jiaoguanyi.appstore"; String store = "com.jiaoguanyi.store"; if (!TextUtils.isEmpty(result)) { @@ -309,6 +319,8 @@ public class InitJpushServer extends Service { } + + private void deleteOtherApp(String packageList) { Log.e("deleteOtherApp", "packageList:" + packageList); String[] result = packageList.split(","); @@ -593,7 +605,7 @@ public class InitJpushServer extends Service { LogUtils.e("UpdateList:upgrade_not:" + upgrade_not + "-----------upgrade_ok:" + upgrade_ok); LogUtils.e("launch:" + launch + "-----------net_ok:" + net_ok + "-----------net_not:" + net_not); - boolean qch_app_power_on = Settings.System.putString(getApplicationContext().getContentResolver(), "qch_app_power_on", launch); + boolean qch_app_power_on = Settings.System.putString(InitJpushServer.this.getContentResolver(), "qch_app_power_on", launch); // Intent netControlIntent = new Intent(CommonDatas.ACTION_HrReceiver_JGY_DIS); // netControlIntent.putExtra("package_name", net_not); @@ -627,20 +639,34 @@ public class InitJpushServer extends Service { private void writeDeselectBrowserIDtoSystem(String ids) { // if (!TextUtils.isEmpty(ids)) { - boolean deselectBrowserArray = Settings.System.putString(getApplicationContext().getContentResolver(), "DeselectBrowserArray", ids); + boolean deselectBrowserArray = Settings.System.putString(InitJpushServer.this.getContentResolver(), "DeselectBrowserArray", ids); Log.e("SystemSetting", "DeselectBrowserArray---------" + deselectBrowserArray); // } else { // Log.e("mjsheng", "writeDeselectBrowserIDtoSystem is null:"); // } } - private void writeDeselectIDtoSystem(String ids) { - if (!TextUtils.isEmpty(ids)) { - boolean deselectViewArray = Settings.System.putString(getApplicationContext().getContentResolver(), "DeselectViewArray", ids); - Log.e("SystemSetting", "deselectViewArray---------" + deselectViewArray); + //应用id管控 + private void writeDeselectIDtoSystem(String s1, String result) { + if (!TextUtils.isEmpty(s1) && !TextUtils.isEmpty(result)) { + String appstore = "com.jiaoguanyi.appstore"; + String store = "com.jiaoguanyi.store"; + LogUtils.e(result); + if (!result.contains(appstore)) { + result = result + "," + appstore; + } + if (!result.contains(store)) { + result = result + "," + store; + } + String olddeselectViewArray = Settings.System.getString(this.getContentResolver(), "qch_app_forbid_id"); + Log.e("SystemSetting", "olddeselectViewArray---------" + olddeselectViewArray); + Settings.System.putString(this.getContentResolver(), "qch_app_forbid_id", result); + Settings.System.putString(this.getContentResolver(), "DeselectViewArray", s1); + Log.e("qch_app_forbid_id", "qch_app_forbid_id---------" + result); + Log.e("SystemSetting", "deselectViewArray---------" + s1); } else { - boolean deselectViewArray = Settings.System.putString(getApplicationContext().getContentResolver(), "DeselectViewArray", "Invalid"); Log.e("mjsheng", "writeDeselectIDtoSystem is null:"); + Settings.System.putString(this.getContentResolver(), "DeselectViewArray", "Invalid"); } } @@ -671,9 +697,12 @@ public class InitJpushServer extends Service { Log.e("initmjsheng", "getSystemSetting---code is -200"); break; } - } catch (Exception e) { - Log.e("initmjsheng", "1getSystemSetting---wroing----" + e.getMessage()); + } catch (IOException e) { e.printStackTrace(); + Log.e("initmjsheng", "1getSystemSetting---IOException----" + e.getMessage()); + } catch (JSONException e) { + e.printStackTrace(); + Log.e("initmjsheng", "1getSystemSetting---JSONException----" + e.getMessage()); } } @@ -704,7 +733,7 @@ public class InitJpushServer extends Service { } synchronized public void sendMACaddress() { - String rid = JPushInterface.getRegistrationID(getApplicationContext()); + String rid = JPushInterface.getRegistrationID(InitJpushServer.this); OkGo.post(Configure.SEND_DEVICES) .params("sn", Utils.getSerial()) @@ -751,15 +780,15 @@ public class InitJpushServer extends Service { Log.e("jpttlocked", String.valueOf(lock)); if (lock == 0) { locked = false; - boolean se = Settings.System.putInt(getApplicationContext().getContentResolver(), "qch_unlock_ipad", 1); - Log.e("fht", "getLockedState---------" + Settings.System.getString(getApplicationContext().getContentResolver(), "qch_unlock_ipad")); + boolean se = Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_unlock_ipad", 1); + Log.e("fht", "getLockedState---------" + Settings.System.getString(InitJpushServer.this.getContentResolver(), "qch_unlock_ipad")); Log.e("jpttlocked1", "qch_unlock_ipad---------" + locked + se); } else { locked = true; - Settings.System.putInt(getApplicationContext().getContentResolver(), "qch_unlock_ipad", 0); + Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_unlock_ipad", 0); Log.e("jpttlocked2", "qch_unlock_ipad---------" + locked); -// Settings.System.putString(getApplicationContext().getContentResolver(), "DeselectBrowserArray", "http://www.baidu.com"); - String ss = Settings.System.getString(getApplicationContext().getContentResolver(), "DeselectBrowserArray"); +// Settings.System.putString(InitJpushServer.this.getContentResolver(), "DeselectBrowserArray", "http://www.baidu.com"); + String ss = Settings.System.getString(InitJpushServer.this.getContentResolver(), "DeselectBrowserArray"); Log.e("jpttlocked2", "DeselectBrowserArray---------" + ss); // 初始化 JPush JPushInterface.init(InitJpushServer.this); @@ -811,20 +840,20 @@ public class InitJpushServer extends Service { private void SettingSysData(JSONObject data) { try { int setting_call = changeNum(data.optInt("setting_call")); - boolean qch_call_forbid = Settings.System.putInt(getApplicationContext().getContentResolver(), "qch_call_forbid", setting_call); + boolean qch_call_forbid = Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_call_forbid", setting_call); Log.e("SystemSetting", "qch_call_forbid---------" + qch_call_forbid); int setting_phone = changeNum(data.optInt("setting_phone")); - boolean qch_white_list_on = Settings.System.putInt(getApplicationContext().getContentResolver(), "qch_white_list_on", setting_phone); + boolean qch_white_list_on = Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_white_list_on", setting_phone); Log.e("SystemSetting", "qch_white_list_on---------" + qch_white_list_on); String setting_phones = data.optString("setting_phones"); - boolean qch_white_list_Array = Settings.System.putString(getApplicationContext().getContentResolver(), "qch_white_list_Array", setting_phones); + boolean qch_white_list_Array = Settings.System.putString(InitJpushServer.this.getContentResolver(), "qch_white_list_Array", setting_phones); // ToastTool.show("qch_call_forbid::"+setting_call+"----setting_phones::"+setting_phones+"----"+qch_white_list_Array+"---"+qch_call_forbid); Log.e("SystemSetting", "qch_white_list_Array---------" + qch_white_list_Array + "---" + setting_phones); int setting_memory = changeNum(data.optInt("setting_memory")); - boolean qch_sdcard_forbid_on = Settings.System.putInt(getApplicationContext().getContentResolver(), "qch_sdcard_forbid_on", setting_memory); + boolean qch_sdcard_forbid_on = Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_sdcard_forbid_on", setting_memory); Log.e("SystemSetting", "qch_sdcard_forbid_on---------" + qch_sdcard_forbid_on); @@ -834,7 +863,7 @@ public class InitJpushServer extends Service { //Midi模式:usb_midi String setting_usb = data.optString("setting_usb"); if (!BuildConfig.DEBUG) { - boolean qch_usb_choose = Settings.System.putString(getApplicationContext().getContentResolver(), "qch_usb_choose", setting_usb); + boolean qch_usb_choose = Settings.System.putString(InitJpushServer.this.getContentResolver(), "qch_usb_choose", setting_usb); Log.e("SystemSetting", "qch_usb_choose---------" + qch_usb_choose); String usbStatus = ""; switch (setting_usb) { @@ -870,12 +899,12 @@ public class InitJpushServer extends Service { //蓝牙开关 int setting_bluetooth = changeNum(data.optInt("setting_bluetooth")); - boolean qch_bt_forbid_on = Settings.System.putInt(getApplicationContext().getContentResolver(), "qch_bt_forbid_on", setting_bluetooth); + boolean qch_bt_forbid_on = Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_bt_forbid_on", setting_bluetooth); Log.e("SystemSetting", "qch_bt_forbid_on---------" + qch_bt_forbid_on); //系统导航条显示开关 int setting_navigation = changeNum(data.optInt("setting_navigation")); - boolean qch_hide_navigationBar = Settings.System.putInt(getApplicationContext().getContentResolver(), "qch_hide_NavigationBar", setting_navigation); + boolean qch_hide_navigationBar = Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_hide_NavigationBar", setting_navigation); Log.e("SystemSetting", "qch_hide_navigationBar---------" + qch_hide_navigationBar); String navigationStatus = ""; @@ -930,7 +959,7 @@ public class InitJpushServer extends Service { //tfmedia开关 int setting_tfmedia = changeNum(data.optInt("setting_tfmedia")); - boolean qch_tfmedia_forbid = Settings.System.putInt(getApplicationContext().getContentResolver(), + boolean qch_tfmedia_forbid = Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_tfmedia_forbid", setting_tfmedia); Log.e("SystemSetting", "setting_tfmedia---------" + qch_tfmedia_forbid); String tfmediaStatus = ""; @@ -957,7 +986,7 @@ public class InitJpushServer extends Service { i++; } stringBuffer.deleteCharAt(stringBuffer.length() - 1); - Settings.System.putString(getApplicationContext().getContentResolver(), "qch_tfmedia_filetypes", stringBuffer.toString());//影音管控 + Settings.System.putString(InitJpushServer.this.getContentResolver(), "qch_tfmedia_filetypes", stringBuffer.toString());//影音管控 Log.e("SystemSetting", "qch_tfmedia_filetypes---------" + stringBuffer.toString()); } catch (JSONException e) { @@ -965,37 +994,37 @@ public class InitJpushServer extends Service { } } else { - Settings.System.putInt(getApplicationContext().getContentResolver(), "qch_tfmedia_forbid", 0); + Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_tfmedia_forbid", 0); } //added:2019.12.6 //设置5个app的开关 //时钟 int deskclock = changeNum(data.optInt("setting_clock")); - Settings.System.putInt(getApplicationContext().getContentResolver(), "qch_app_deskclock", deskclock); + Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_app_deskclock", deskclock); Log.e("SystemSetting", "qch_app_deskclock" + deskclock); //录音机 int soundrecorder = changeNum(data.optInt("setting_recording")); - Settings.System.putInt(getApplicationContext().getContentResolver(), "qch_app_soundrecorder", soundrecorder); + Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_app_soundrecorder", soundrecorder); Log.e("SystemSetting", "qch_app_soundrecorder" + soundrecorder); //音乐 int music = changeNum(data.optInt("setting_music")); - Settings.System.putInt(getApplicationContext().getContentResolver(), "qch_app_music", music); + Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_app_music", music); Log.e("SystemSetting", "qch_app_music" + music); //图库 int gallery = changeNum(data.optInt("setting_picture")); - Settings.System.putInt(getApplicationContext().getContentResolver(), "qch_app_gallery", gallery); + Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_app_gallery", gallery); Log.e("SystemSetting", "qch_app_gallery" + gallery); //壁纸 int wallpaper = changeNum(data.optInt("setting_wallpaper")); - Settings.System.putInt(getApplicationContext().getContentResolver(), "qch_app_wallpaper", wallpaper); + Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_app_wallpaper", wallpaper); Log.e("SystemSetting", "qch_app_wallpaper" + wallpaper); //文件管理器 int filemanager = changeNum(data.optInt("setting_file")); - Settings.System.putInt(getApplicationContext().getContentResolver(), "qch_app_filemanager", filemanager); + Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_app_filemanager", filemanager); Log.e("SystemSetting", "qch_app_filemanager" + filemanager); } catch (Exception e) { e.printStackTrace(); - Log.e("mjsheng", "SettingSysData---error::" + e.getMessage()); + Log.e("mjsheng", "SettingSysData---1error::" + e.getMessage()); } } diff --git a/app/src/main/java/com/mjsheng/myappstore/utils/ApkUtils.java b/app/src/main/java/com/mjsheng/myappstore/utils/ApkUtils.java index 5893694..a30fcd5 100644 --- a/app/src/main/java/com/mjsheng/myappstore/utils/ApkUtils.java +++ b/app/src/main/java/com/mjsheng/myappstore/utils/ApkUtils.java @@ -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 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 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); + } + }