Skip to content

Commit

Permalink
支持快速选择系统预设应用,优化电量优化设置
Browse files Browse the repository at this point in the history
  • Loading branch information
egdw committed Sep 30, 2021
1 parent 74abefa commit d4e999f
Show file tree
Hide file tree
Showing 11 changed files with 415 additions and 42 deletions.
5 changes: 3 additions & 2 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="monitor.mobie.hdy.im"
android:versionName="4.1"
android:versionName="4.3"
android:versionCode="4">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
Expand Down Expand Up @@ -33,7 +35,6 @@
<service
android:name=".service.MonitorService"
android:enabled="true"

android:process="system">

</service>
Expand Down
48 changes: 47 additions & 1 deletion app/src/main/java/monitor/mobie/hdy/im/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,13 @@
import android.database.sqlite.SQLiteDatabase;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.PowerManager;
import android.support.annotation.NonNull;
import android.support.annotation.RequiresApi;
import android.support.v4.app.NotificationManagerCompat;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
Expand Down Expand Up @@ -44,7 +47,6 @@ public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//检查更新
Log.i("APP checking update","loading");
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Expand All @@ -67,6 +69,7 @@ private void init() {
tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("介绍", null).setContent(R.id.tab1));
tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("推送设置", null).setContent(R.id.tab2));
tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("通知设置", null).setContent(R.id.tab3));
tabHost.addTab(tabHost.newTabSpec("tab4").setIndicator("更多设置", null).setContent(R.id.tab4));
if (!isNotificationListenerServiceEnabled(this)) {
Toast.makeText(this, "请先勾选手机监听器的读取通知栏权限!", Toast.LENGTH_LONG).show();
return;
Expand Down Expand Up @@ -145,6 +148,11 @@ protected void onResume() {
//说明需要重新获取数据
myHandler.sendEmptyMessage(0x3);
}
if(Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
if (!isIgnoringBatteryOptimizations()) {
Toast.makeText(this, "请将省电优化设置为无限制,关闭对通知器的省电优化有助于防止程序被杀!!", Toast.LENGTH_LONG).show();
}
}
startService(serviceIntent);
}

Expand Down Expand Up @@ -175,6 +183,24 @@ private static boolean isNotificationListenerServiceEnabled(Context context) {
return false;
}

/**
* 判断系统是否已经关闭省电优化
* @return
*/
@RequiresApi(api = Build.VERSION_CODES.M)
private boolean isIgnoringBatteryOptimizations() {
boolean isIgnoring = false;
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
if (powerManager != null) {
isIgnoring = powerManager.isIgnoringBatteryOptimizations(getPackageName());
}
if (!isIgnoring){
Intent i = new Intent(android.provider.Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
startActivity(i);
}
return isIgnoring;
}

private static final String ACTION_NOTIFICATION_LISTENER_SETTINGS = "android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS";

private void openNotificationAccess() {
Expand Down Expand Up @@ -228,4 +254,24 @@ public void run() {
}
}).start();
}

/**
* 跳转到指定应用的首页
*/
private void showActivity(@NonNull String packageName) {
Intent intent = getPackageManager().getLaunchIntentForPackage(packageName);
startActivity(intent);
}

/**
* 跳转到指定应用的指定页面
*/
private void showActivity(@NonNull String packageName, @NonNull String activityDir) {
Intent intent = new Intent();
intent.setComponent(new ComponentName(packageName, activityDir));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@
*/

public class BootBroadcastReciver extends BroadcastReceiver {
private MonitorService monitorService;
private boolean flag;

@Override
public void onReceive(Context context, Intent intent) {
Expand Down
117 changes: 117 additions & 0 deletions app/src/main/java/monitor/mobie/hdy/im/config/Constant.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,121 @@ public interface Constant {
public static final String EMAIL_TYPE = "email_type";
public static final String EMAIL_RECEIVER = "email_receiver";


/**
* 预设常用的软件包名,一键启用对对应软件的通知接收
*/
//中国常用社交软件
public static final String[] ChinaTalkAPP = {
"com.tencent.mobileqq",
"com.tencent.mm",
"com.alibaba.android.rimet",
"com.tencent.qqlite",
"com.tencent.minihd.qq",
"com.tencent.mobileqqi",
"com.tencent.tim",
"com.bullet.messenger",
"im.yixin",
"com.juphoon.justalk",
"com.tencent.eim",
"com.tencent.wework",
"com.sina.weibo",
"com.p1.mobile.putong",
"com.immomo.momo"
};

//中国常用购物消费软件
public static final String[] ChinaShopAPP = {
"com.taobao.taobao",
"com.eg.android.AlipayGphone",
"com.jingdong.app.mall",
"com.sankuai.meituan",
"com.taobao.idlefish",
"com.xunmeng.pinduoduo",
"com.xiaomi.shop",
"com.tmall.wireless",
"com.suning.mobile.ebuy",
"com.alibaba.wireless",
"com.xingin.xhs",
"com.nuomi",
"com.dangdang.buy2",
"com.netease.yanxuan",
"com.koudai.weidian.buyer",
"com.thestore.main",
"com.gome.eshopnew",
"com.huodao.hdphone",
"com.fenqile.fenqile",
"com.taobao.litetao",
"com.jm.android.jumei",
"com.meilishuo",
"com.jd.jdlite",
"com.meituan.retail.v.android",
"cn.missfresh.application",
"com.baidu.wallet",
"com.wangyin.payment"
};

//国外常用社交软件
public static final String[] OtherTalkAPP = {
"com.twitter.android",
"jp.naver.line.android",
"com.skype.raider",
"com.facebook.katana",
"com.android.chrome",
"com.whatsapp",
"com.facebook.orca"
};

//新闻类软件
public static final String[] NewsAPP = {
"com.ss.android.article.news",
"com.sina.weibo",
"com.netease.newsreader.activity",
"com.sohu.newsclient"
};

//短视频类
public static final String[] ShortVideos = {
"com.ss.android.ugc.aweme",
"com.smile.gifmaker",
"com.ss.android.ugc.live",
"com.yixia.videoeditor",
"com.youku.phone",
"com.qiyi.video",
"com.tencent.qqlive",
"air.tv.douyu.android",
"com.panda.videoliveplatform"
};


//外卖类
public static final String[] TakeOut = {
"me.ele",
"com.sankuai.meituan.takeoutnew",
"com.dianping.v1"
};


//音乐类
public static final String[] Music = {
"com.tencent.qqmusic",
"com.kugou.android",
"com.tencent.karaoke",
"cn.kuwo.player",
"fm.xiami.main",
"com.changba",
"com.netease.cloudmusic",
"com.ximalaya.ting.android"
};

// 短信和电话
public static final String[] PhoneAndMessage = {
"com.android.contacts",
"com.android.dialer",
"com.android.mms",
"com.android.providers.telephony",
"com.android.phone",
"com.android.incallui"
};

}
Original file line number Diff line number Diff line change
Expand Up @@ -32,24 +32,17 @@ public void onCreate(@Nullable Bundle savedInstanceState) {
private void init() {
final SQLiteDatabase writeInstance =
AppinfosDatabase.getWriteInstance(getContext());
SwitchPreference listenAll = (SwitchPreference) findPreference("listenAll");
Preference light = findPreference("LIGHT");
light.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
return true;
}
});
SwitchPreference listenAll = (SwitchPreference) findPreference("customListen");
listenAll.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
Boolean b = (Boolean) newValue;
MainActivity mainActivity = (MainActivity) getActivity();
if (b) {
AppinfosDatabase.getInstance(getContext()).removeAll(writeInstance);
mainActivity.myHandler.sendEmptyMessage(0x2);
} else {
mainActivity.myHandler.sendEmptyMessage(0x3);
} else {
mainActivity.myHandler.sendEmptyMessage(0x2);
}
return true;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package monitor.mobie.hdy.im.fragment;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Build;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.SwitchPreference;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;

import monitor.mobie.hdy.im.MainActivity;
import monitor.mobie.hdy.im.R;
import monitor.mobie.hdy.im.database.AppinfosDatabase;

/**
* Created by hdy on 2021/9/29.
* 其他设置fragment
*/

public class OtherSettingFrament extends PreferenceFragment {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getPreferenceManager().setSharedPreferencesName("data");
getPreferenceManager().setSharedPreferencesMode(Context.MODE_MULTI_PROCESS);
addPreferencesFromResource(R.xml.preference_others);
}

@RequiresApi(api = Build.VERSION_CODES.M)
private void init() {

}

@RequiresApi(api = Build.VERSION_CODES.M)
@Override
public void onStart() {
super.onStart();
init();
}

}
Loading

0 comments on commit d4e999f

Please sign in to comment.