mirror of
https://github.com/pppscn/SmsForwarder
synced 2025-08-03 17:37:40 +08:00
整理:工具类代码
This commit is contained in:
parent
64f6ec1369
commit
e6cafa521a
@ -18,8 +18,8 @@ import androidx.appcompat.app.AppCompatActivity;
|
|||||||
|
|
||||||
import com.idormy.sms.forwarder.receiver.RebootBroadcastReceiver;
|
import com.idormy.sms.forwarder.receiver.RebootBroadcastReceiver;
|
||||||
import com.idormy.sms.forwarder.utils.CacheUtil;
|
import com.idormy.sms.forwarder.utils.CacheUtil;
|
||||||
|
import com.idormy.sms.forwarder.utils.CommonUtil;
|
||||||
import com.idormy.sms.forwarder.utils.Define;
|
import com.idormy.sms.forwarder.utils.Define;
|
||||||
import com.idormy.sms.forwarder.utils.aUtil;
|
|
||||||
import com.xuexiang.xupdate.easy.EasyUpdate;
|
import com.xuexiang.xupdate.easy.EasyUpdate;
|
||||||
import com.xuexiang.xupdate.proxy.impl.DefaultUpdateChecker;
|
import com.xuexiang.xupdate.proxy.impl.DefaultUpdateChecker;
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ public class AboutActivity extends AppCompatActivity {
|
|||||||
final TextView version_now = findViewById(R.id.version_now);
|
final TextView version_now = findViewById(R.id.version_now);
|
||||||
Button check_version_now = findViewById(R.id.check_version_now);
|
Button check_version_now = findViewById(R.id.check_version_now);
|
||||||
try {
|
try {
|
||||||
version_now.setText(aUtil.getVersionName(AboutActivity.this));
|
version_now.setText(CommonUtil.getVersionName(AboutActivity.this));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@ -56,7 +56,7 @@ public class AboutActivity extends AppCompatActivity {
|
|||||||
check_version_now.setOnClickListener(v -> {
|
check_version_now.setOnClickListener(v -> {
|
||||||
try {
|
try {
|
||||||
String updateUrl = "https://xupdate.bms.ink/update/checkVersion?appKey=com.idormy.sms.forwarder&versionCode=";
|
String updateUrl = "https://xupdate.bms.ink/update/checkVersion?appKey=com.idormy.sms.forwarder&versionCode=";
|
||||||
updateUrl += aUtil.getVersionCode(AboutActivity.this);
|
updateUrl += CommonUtil.getVersionCode(AboutActivity.this);
|
||||||
|
|
||||||
EasyUpdate.create(AboutActivity.this, updateUrl)
|
EasyUpdate.create(AboutActivity.this, updateUrl)
|
||||||
.updateChecker(new DefaultUpdateChecker() {
|
.updateChecker(new DefaultUpdateChecker() {
|
||||||
@ -154,5 +154,4 @@ public class AboutActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -34,11 +34,12 @@ import com.idormy.sms.forwarder.notify.NotifyListener;
|
|||||||
import com.idormy.sms.forwarder.sender.SendUtil;
|
import com.idormy.sms.forwarder.sender.SendUtil;
|
||||||
import com.idormy.sms.forwarder.service.FrontService;
|
import com.idormy.sms.forwarder.service.FrontService;
|
||||||
import com.idormy.sms.forwarder.service.NotifyService;
|
import com.idormy.sms.forwarder.service.NotifyService;
|
||||||
|
import com.idormy.sms.forwarder.utils.CommonUtil;
|
||||||
import com.idormy.sms.forwarder.utils.LogUtil;
|
import com.idormy.sms.forwarder.utils.LogUtil;
|
||||||
import com.idormy.sms.forwarder.utils.NetUtil;
|
import com.idormy.sms.forwarder.utils.NetUtil;
|
||||||
import com.idormy.sms.forwarder.utils.PhoneUtils;
|
import com.idormy.sms.forwarder.utils.PhoneUtils;
|
||||||
import com.idormy.sms.forwarder.utils.SmsUtil;
|
import com.idormy.sms.forwarder.utils.SmsUtil;
|
||||||
import com.idormy.sms.forwarder.utils.aUtil;
|
import com.idormy.sms.forwarder.utils.TimeUtil;
|
||||||
|
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
@ -71,7 +72,7 @@ public class MainActivity extends AppCompatActivity implements NotifyListener, R
|
|||||||
|
|
||||||
//检查权限是否获取
|
//检查权限是否获取
|
||||||
PackageManager pm = getPackageManager();
|
PackageManager pm = getPackageManager();
|
||||||
PhoneUtils.CheckPermission(pm, this);
|
CommonUtil.CheckPermission(pm, this);
|
||||||
|
|
||||||
//获取SIM信息
|
//获取SIM信息
|
||||||
PhoneUtils.init(this);
|
PhoneUtils.init(this);
|
||||||
@ -298,9 +299,9 @@ public class MainActivity extends AppCompatActivity implements NotifyListener, R
|
|||||||
builder.setTitle(R.string.details);
|
builder.setTitle(R.string.details);
|
||||||
String simInfo = logVo.getSimInfo();
|
String simInfo = logVo.getSimInfo();
|
||||||
if (simInfo != null) {
|
if (simInfo != null) {
|
||||||
builder.setMessage(logVo.getFrom() + "\n\n" + logVo.getContent() + "\n\n" + logVo.getSimInfo() + "\n\n" + logVo.getRule() + "\n\n" + aUtil.utc2Local(logVo.getTime()) + "\n\nResponse:" + logVo.getForwardResponse());
|
builder.setMessage(logVo.getFrom() + "\n\n" + logVo.getContent() + "\n\n" + logVo.getSimInfo() + "\n\n" + logVo.getRule() + "\n\n" + TimeUtil.utc2Local(logVo.getTime()) + "\n\nResponse:" + logVo.getForwardResponse());
|
||||||
} else {
|
} else {
|
||||||
builder.setMessage(logVo.getFrom() + "\n\n" + logVo.getContent() + "\n\n" + logVo.getRule() + "\n\n" + aUtil.utc2Local(logVo.getTime()) + "\n\nResponse:" + logVo.getForwardResponse());
|
builder.setMessage(logVo.getFrom() + "\n\n" + logVo.getContent() + "\n\n" + logVo.getRule() + "\n\n" + TimeUtil.utc2Local(logVo.getTime()) + "\n\nResponse:" + logVo.getForwardResponse());
|
||||||
}
|
}
|
||||||
//删除
|
//删除
|
||||||
builder.setNegativeButton(R.string.del, (dialog, which) -> {
|
builder.setNegativeButton(R.string.del, (dialog, which) -> {
|
||||||
|
@ -10,7 +10,7 @@ import android.widget.TextView;
|
|||||||
|
|
||||||
import com.idormy.sms.forwarder.R;
|
import com.idormy.sms.forwarder.R;
|
||||||
import com.idormy.sms.forwarder.model.vo.LogVo;
|
import com.idormy.sms.forwarder.model.vo.LogVo;
|
||||||
import com.idormy.sms.forwarder.utils.aUtil;
|
import com.idormy.sms.forwarder.utils.TimeUtil;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -76,7 +76,7 @@ public class LogAdapter extends ArrayAdapter<LogVo> {
|
|||||||
viewHolder.tLogFrom.setText(logVo.getFrom());
|
viewHolder.tLogFrom.setText(logVo.getFrom());
|
||||||
viewHolder.tLogContent.setText(logVo.getContent());
|
viewHolder.tLogContent.setText(logVo.getContent());
|
||||||
viewHolder.tLogRule.setText(logVo.getRule());
|
viewHolder.tLogRule.setText(logVo.getRule());
|
||||||
viewHolder.tLogTime.setText(aUtil.friendlyTime(logVo.getTime()));
|
viewHolder.tLogTime.setText(TimeUtil.friendlyTime(logVo.getTime()));
|
||||||
viewHolder.senderImage.setImageResource(logVo.getSenderImageId());
|
viewHolder.senderImage.setImageResource(logVo.getSenderImageId());
|
||||||
viewHolder.simImage.setImageResource(logVo.getSimImageId());
|
viewHolder.simImage.setImageResource(logVo.getSimImageId());
|
||||||
viewHolder.statusImage.setImageResource(logVo.getStatusImageId());
|
viewHolder.statusImage.setImageResource(logVo.getStatusImageId());
|
||||||
|
@ -0,0 +1,77 @@
|
|||||||
|
package com.idormy.sms.forwarder.utils;
|
||||||
|
|
||||||
|
import android.Manifest;
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.pm.PackageInfo;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
|
||||||
|
import androidx.core.app.ActivityCompat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 权限相关工具类
|
||||||
|
*/
|
||||||
|
public class CommonUtil {
|
||||||
|
|
||||||
|
//获取当前版本名称
|
||||||
|
public static String getVersionName(Context context) throws Exception {
|
||||||
|
// 获取packagemanager的实例
|
||||||
|
PackageManager packageManager = context.getPackageManager();
|
||||||
|
// getPackageName()是你当前类的包名,0代表是获取版本信息
|
||||||
|
PackageInfo packInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
|
||||||
|
return packInfo.versionName;
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取当前版本号
|
||||||
|
public static Integer getVersionCode(Context context) throws Exception {
|
||||||
|
// 获取packagemanager的实例
|
||||||
|
PackageManager packageManager = context.getPackageManager();
|
||||||
|
// getPackageName()是你当前类的包名,0代表是获取版本信息
|
||||||
|
PackageInfo packInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
|
||||||
|
return packInfo.versionCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查权限是否获取(android6.0及以上系统可能默认关闭权限,且没提示)
|
||||||
|
@SuppressLint("InlinedApi")
|
||||||
|
public static void CheckPermission(PackageManager pm, Context that) {
|
||||||
|
//PackageManager pm = getPackageManager();
|
||||||
|
boolean permission_internet = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.INTERNET", that.getPackageName()));
|
||||||
|
boolean permission_receive_boot = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.RECEIVE_BOOT_COMPLETED", that.getPackageName()));
|
||||||
|
boolean permission_foreground_service = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.FOREGROUND_SERVICE", that.getPackageName()));
|
||||||
|
boolean permission_read_external_storage = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_EXTERNAL_STORAGE", that.getPackageName()));
|
||||||
|
boolean permission_write_external_storage = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.WRITE_EXTERNAL_STORAGE", that.getPackageName()));
|
||||||
|
boolean permission_receive_sms = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.RECEIVE_SMS", that.getPackageName()));
|
||||||
|
boolean permission_read_sms = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_SMS", that.getPackageName()));
|
||||||
|
boolean permission_send_sms = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.SEND_SMS", that.getPackageName()));
|
||||||
|
boolean permission_read_phone_state = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_PHONE_STATE", that.getPackageName()));
|
||||||
|
boolean permission_read_phone_numbers = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_PHONE_NUMBERS", that.getPackageName()));
|
||||||
|
boolean permission_read_call_log = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_CALL_LOG", that.getPackageName()));
|
||||||
|
boolean permission_read_contacts = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_CONTACTS", that.getPackageName()));
|
||||||
|
boolean permission_battery_stats = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.BATTERY_STATS", that.getPackageName()));
|
||||||
|
boolean permission_bind_notification_listener_service = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.BIND_NOTIFICATION_LISTENER_SERVICE", that.getPackageName()));
|
||||||
|
|
||||||
|
if (!(permission_internet && permission_receive_boot && permission_foreground_service &&
|
||||||
|
permission_read_external_storage && permission_write_external_storage &&
|
||||||
|
permission_receive_sms && permission_read_sms && permission_send_sms &&
|
||||||
|
permission_read_call_log && permission_read_contacts &&
|
||||||
|
permission_read_phone_state && permission_read_phone_numbers && permission_battery_stats && permission_bind_notification_listener_service)) {
|
||||||
|
ActivityCompat.requestPermissions((Activity) that, new String[]{
|
||||||
|
Manifest.permission.INTERNET,
|
||||||
|
Manifest.permission.RECEIVE_BOOT_COMPLETED,
|
||||||
|
Manifest.permission.READ_EXTERNAL_STORAGE,
|
||||||
|
Manifest.permission.WRITE_EXTERNAL_STORAGE,
|
||||||
|
Manifest.permission.RECEIVE_SMS,
|
||||||
|
Manifest.permission.READ_SMS,
|
||||||
|
Manifest.permission.SEND_SMS,
|
||||||
|
Manifest.permission.READ_PHONE_STATE,
|
||||||
|
Manifest.permission.READ_CALL_LOG,
|
||||||
|
Manifest.permission.READ_CONTACTS,
|
||||||
|
Manifest.permission.READ_PHONE_NUMBERS,
|
||||||
|
Manifest.permission.FOREGROUND_SERVICE,
|
||||||
|
Manifest.permission.BATTERY_STATS,
|
||||||
|
Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE,
|
||||||
|
}, 0x01);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -21,8 +21,6 @@ public class InitUtil {
|
|||||||
Log.d(TAG, "init context");
|
Log.d(TAG, "init context");
|
||||||
SettingUtil.init(context);
|
SettingUtil.init(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,39 +1,44 @@
|
|||||||
package com.idormy.sms.forwarder.utils;
|
package com.idormy.sms.forwarder.utils;
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.ResolveInfo;
|
import android.content.pm.ResolveInfo;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.PowerManager;
|
import android.os.Build;
|
||||||
import android.provider.Settings;
|
import android.os.PowerManager;
|
||||||
import android.widget.Toast;
|
import android.provider.Settings;
|
||||||
|
import android.widget.Toast;
|
||||||
import com.idormy.sms.forwarder.R;
|
|
||||||
|
import androidx.annotation.RequiresApi;
|
||||||
public class KeepAliveUtils {
|
|
||||||
|
import com.idormy.sms.forwarder.R;
|
||||||
public static boolean isIgnoreBatteryOptimization(Activity activity) {
|
|
||||||
PowerManager powerManager = (PowerManager) activity.getSystemService(Context.POWER_SERVICE);
|
public class KeepAliveUtils {
|
||||||
if (powerManager != null) {
|
|
||||||
return powerManager.isIgnoringBatteryOptimizations(activity.getPackageName());
|
@RequiresApi(api = Build.VERSION_CODES.M)
|
||||||
} else {
|
public static boolean isIgnoreBatteryOptimization(Activity activity) {
|
||||||
return true;
|
PowerManager powerManager = (PowerManager) activity.getSystemService(Context.POWER_SERVICE);
|
||||||
}
|
if (powerManager != null) {
|
||||||
}
|
return powerManager.isIgnoringBatteryOptimizations(activity.getPackageName());
|
||||||
|
} else {
|
||||||
public static void ignoreBatteryOptimization(Activity activity) {
|
return true;
|
||||||
if (isIgnoreBatteryOptimization(activity)) {
|
}
|
||||||
return;
|
}
|
||||||
}
|
|
||||||
@SuppressLint("BatteryLife") Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
|
@RequiresApi(api = Build.VERSION_CODES.M)
|
||||||
intent.setData(Uri.parse("package:" + activity.getPackageName()));
|
public static void ignoreBatteryOptimization(Activity activity) {
|
||||||
ResolveInfo resolveInfo = activity.getPackageManager().resolveActivity(intent, 0);
|
if (isIgnoreBatteryOptimization(activity)) {
|
||||||
if (resolveInfo != null) {
|
return;
|
||||||
activity.startActivity(intent);
|
}
|
||||||
} else {
|
@SuppressLint("BatteryLife") Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
|
||||||
Toast.makeText(activity, R.string.unsupport, Toast.LENGTH_SHORT).show();
|
intent.setData(Uri.parse("package:" + activity.getPackageName()));
|
||||||
}
|
ResolveInfo resolveInfo = activity.getPackageManager().resolveActivity(intent, 0);
|
||||||
}
|
if (resolveInfo != null) {
|
||||||
}
|
activity.startActivity(intent);
|
||||||
|
} else {
|
||||||
|
Toast.makeText(activity, R.string.unsupport, Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1,12 +1,16 @@
|
|||||||
package com.idormy.sms.forwarder.utils;
|
package com.idormy.sms.forwarder.utils;
|
||||||
|
|
||||||
|
import android.os.Environment;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 使用方法:
|
* 使用方法:
|
||||||
* OSUtils.ROM_TYPE romType = OSUtils.getRomType();
|
* OSUtil.ROM_TYPE romType = OSUtil.getRomType();
|
||||||
* 可能您需要对其他的ROM进行区分,那么只需三步:
|
* 可能您需要对其他的ROM进行区分,那么只需三步:
|
||||||
* 一:使用BuildProperties获取到所有的key,遍历获取到所有的value(getProperty),或者直接找到build.prop文件。
|
* 一:使用BuildProperties获取到所有的key,遍历获取到所有的value(getProperty),或者直接找到build.prop文件。
|
||||||
* 二:找到定制ROM特征的标识(key/value)
|
* 二:找到定制ROM特征的标识(key/value)
|
||||||
@ -14,7 +18,30 @@ import java.io.IOException;
|
|||||||
* 作者:YouAreMyShine
|
* 作者:YouAreMyShine
|
||||||
* 链接:https://www.jianshu.com/p/bb1f765a425f
|
* 链接:https://www.jianshu.com/p/bb1f765a425f
|
||||||
*/
|
*/
|
||||||
public class OSUtils {
|
public class OSUtil {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断是否为MIUI系统,参考http://blog.csdn.net/xx326664162/article/details/52438706
|
||||||
|
*
|
||||||
|
* @return 返回结果
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
public static boolean isMIUI() {
|
||||||
|
try {
|
||||||
|
String KEY_MIUI_VERSION_CODE = "ro.miui.ui.version.code";
|
||||||
|
String KEY_MIUI_VERSION_NAME = "ro.miui.ui.version.name";
|
||||||
|
String KEY_MIUI_INTERNAL_STORAGE = "ro.miui.internal.storage";
|
||||||
|
Properties prop = new Properties();
|
||||||
|
prop.load(new FileInputStream(new File(Environment.getRootDirectory(), "build.prop")));
|
||||||
|
|
||||||
|
return prop.getProperty(KEY_MIUI_VERSION_CODE, null) != null
|
||||||
|
|| prop.getProperty(KEY_MIUI_VERSION_NAME, null) != null
|
||||||
|
|| prop.getProperty(KEY_MIUI_INTERNAL_STORAGE, null) != null;
|
||||||
|
} catch (final IOException e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MIUI ROM标识
|
* MIUI ROM标识
|
||||||
* <p>
|
* <p>
|
@ -2,7 +2,6 @@ package com.idormy.sms.forwarder.utils;
|
|||||||
|
|
||||||
import android.Manifest;
|
import android.Manifest;
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.app.Activity;
|
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
@ -528,49 +527,6 @@ public class PhoneUtils {
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查权限是否获取(android6.0及以上系统可能默认关闭权限,且没提示)
|
|
||||||
@SuppressLint("InlinedApi")
|
|
||||||
public static void CheckPermission(PackageManager pm, Context that) {
|
|
||||||
//PackageManager pm = getPackageManager();
|
|
||||||
boolean permission_internet = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.INTERNET", that.getPackageName()));
|
|
||||||
boolean permission_receive_boot = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.RECEIVE_BOOT_COMPLETED", that.getPackageName()));
|
|
||||||
boolean permission_foreground_service = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.FOREGROUND_SERVICE", that.getPackageName()));
|
|
||||||
boolean permission_read_external_storage = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_EXTERNAL_STORAGE", that.getPackageName()));
|
|
||||||
boolean permission_write_external_storage = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.WRITE_EXTERNAL_STORAGE", that.getPackageName()));
|
|
||||||
boolean permission_receive_sms = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.RECEIVE_SMS", that.getPackageName()));
|
|
||||||
boolean permission_read_sms = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_SMS", that.getPackageName()));
|
|
||||||
boolean permission_send_sms = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.SEND_SMS", that.getPackageName()));
|
|
||||||
boolean permission_read_phone_state = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_PHONE_STATE", that.getPackageName()));
|
|
||||||
boolean permission_read_phone_numbers = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_PHONE_NUMBERS", that.getPackageName()));
|
|
||||||
boolean permission_read_call_log = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_CALL_LOG", that.getPackageName()));
|
|
||||||
boolean permission_read_contacts = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_CONTACTS", that.getPackageName()));
|
|
||||||
boolean permission_battery_stats = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.BATTERY_STATS", that.getPackageName()));
|
|
||||||
boolean permission_bind_notification_listener_service = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.BIND_NOTIFICATION_LISTENER_SERVICE", that.getPackageName()));
|
|
||||||
|
|
||||||
if (!(permission_internet && permission_receive_boot && permission_foreground_service &&
|
|
||||||
permission_read_external_storage && permission_write_external_storage &&
|
|
||||||
permission_receive_sms && permission_read_sms && permission_send_sms &&
|
|
||||||
permission_read_call_log && permission_read_contacts &&
|
|
||||||
permission_read_phone_state && permission_read_phone_numbers && permission_battery_stats && permission_bind_notification_listener_service)) {
|
|
||||||
ActivityCompat.requestPermissions((Activity) that, new String[]{
|
|
||||||
Manifest.permission.INTERNET,
|
|
||||||
Manifest.permission.RECEIVE_BOOT_COMPLETED,
|
|
||||||
Manifest.permission.READ_EXTERNAL_STORAGE,
|
|
||||||
Manifest.permission.WRITE_EXTERNAL_STORAGE,
|
|
||||||
Manifest.permission.RECEIVE_SMS,
|
|
||||||
Manifest.permission.READ_SMS,
|
|
||||||
Manifest.permission.SEND_SMS,
|
|
||||||
Manifest.permission.READ_PHONE_STATE,
|
|
||||||
Manifest.permission.READ_CALL_LOG,
|
|
||||||
Manifest.permission.READ_CONTACTS,
|
|
||||||
Manifest.permission.READ_PHONE_NUMBERS,
|
|
||||||
Manifest.permission.FOREGROUND_SERVICE,
|
|
||||||
Manifest.permission.BATTERY_STATS,
|
|
||||||
Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE,
|
|
||||||
}, 0x01);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SIM 卡信息
|
* SIM 卡信息
|
||||||
*/
|
*/
|
||||||
|
@ -53,7 +53,6 @@ public class SimUtil {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//通过卡槽ID获取SubscriptionId
|
//通过卡槽ID获取SubscriptionId
|
||||||
public static int getSubscriptionIdBySimId(int simId) {
|
public static int getSubscriptionIdBySimId(int simId) {
|
||||||
try {
|
try {
|
||||||
|
@ -4,9 +4,12 @@ import android.annotation.SuppressLint;
|
|||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.os.Build;
|
||||||
import android.telephony.SmsManager;
|
import android.telephony.SmsManager;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import androidx.annotation.RequiresApi;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@ -25,6 +28,7 @@ public class SmsUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP_MR1)
|
||||||
public static String sendSms(int subId, String mobiles, String message) {
|
public static String sendSms(int subId, String mobiles, String message) {
|
||||||
mobiles = mobiles.replace(";", ";");
|
mobiles = mobiles.replace(";", ";");
|
||||||
Log.d(TAG, "subId = " + subId + ", mobiles = " + mobiles + ", message = " + message);
|
Log.d(TAG, "subId = " + subId + ", mobiles = " + mobiles + ", message = " + message);
|
||||||
|
@ -1,59 +1,13 @@
|
|||||||
package com.idormy.sms.forwarder.utils;
|
package com.idormy.sms.forwarder.utils;
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.content.Context;
|
|
||||||
import android.content.pm.PackageInfo;
|
|
||||||
import android.content.pm.PackageManager;
|
|
||||||
import android.os.Environment;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Properties;
|
|
||||||
import java.util.TimeZone;
|
import java.util.TimeZone;
|
||||||
|
|
||||||
public class aUtil {
|
public class TimeUtil {
|
||||||
|
|
||||||
/**
|
|
||||||
* 判断是否为MIUI系统,参考http://blog.csdn.net/xx326664162/article/details/52438706
|
|
||||||
*
|
|
||||||
* @return 返回结果
|
|
||||||
*/
|
|
||||||
@SuppressWarnings("unused")
|
|
||||||
public static boolean isMIUI() {
|
|
||||||
try {
|
|
||||||
String KEY_MIUI_VERSION_CODE = "ro.miui.ui.version.code";
|
|
||||||
String KEY_MIUI_VERSION_NAME = "ro.miui.ui.version.name";
|
|
||||||
String KEY_MIUI_INTERNAL_STORAGE = "ro.miui.internal.storage";
|
|
||||||
Properties prop = new Properties();
|
|
||||||
prop.load(new FileInputStream(new File(Environment.getRootDirectory(), "build.prop")));
|
|
||||||
|
|
||||||
return prop.getProperty(KEY_MIUI_VERSION_CODE, null) != null
|
|
||||||
|| prop.getProperty(KEY_MIUI_VERSION_NAME, null) != null
|
|
||||||
|| prop.getProperty(KEY_MIUI_INTERNAL_STORAGE, null) != null;
|
|
||||||
} catch (final IOException e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getVersionName(Context context) throws Exception {
|
|
||||||
// 获取packagemanager的实例
|
|
||||||
PackageManager packageManager = context.getPackageManager();
|
|
||||||
// getPackageName()是你当前类的包名,0代表是获取版本信息
|
|
||||||
PackageInfo packInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
|
|
||||||
return packInfo.versionName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Integer getVersionCode(Context context) throws Exception {
|
|
||||||
// 获取packagemanager的实例
|
|
||||||
PackageManager packageManager = context.getPackageManager();
|
|
||||||
// getPackageName()是你当前类的包名,0代表是获取版本信息
|
|
||||||
PackageInfo packInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
|
|
||||||
return packInfo.versionCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
//友好时间显示
|
//友好时间显示
|
||||||
public static String friendlyTime(String utcTime) {
|
public static String friendlyTime(String utcTime) {
|
Loading…
x
Reference in New Issue
Block a user