diff --git a/app/build.gradle b/app/build.gradle index 2e56a2b..b52a012 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -57,14 +57,31 @@ android { signingConfigs { keypub { - storeFile file(rootProject.ext.signingConfigs.keypub.storeFile) + storeFile file(rootProject.ext.signingConfigs.keypub.storeFile) storePassword rootProject.ext.signingConfigs.keypub.storePassword - keyAlias rootProject.ext.signingConfigs.keypub.keyAlias - keyPassword rootProject.ext.signingConfigs.keypub.keyPassword + keyAlias rootProject.ext.signingConfigs.keypub.keyAlias + keyPassword rootProject.ext.signingConfigs.keypub.keyPassword + } + + crosshatch { + storeFile file(rootProject.ext.signingConfigs.crosshatch.storeFile) + storePassword rootProject.ext.signingConfigs.crosshatch.storePassword + keyAlias rootProject.ext.signingConfigs.crosshatch.keyAlias + keyPassword rootProject.ext.signingConfigs.crosshatch.keyPassword } } buildTypes { + CrosshatchDebug.initWith(debug) + CrosshatchDebug { + debuggable true + signingConfig signingConfigs.crosshatch + } + + CrosshatchRelease.initWith(release) + CrosshatchRelease { + signingConfig signingConfigs.crosshatch + } debug { versionNameSuffix "_debug" debuggable true diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 148ec4d..03bf1ef 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,7 @@ + package="com.ttstd.dialer" + android:sharedUserId="android.uid.system"> @@ -93,6 +94,19 @@ android:name="com.baidu.location.f" android:enabled="true" android:process=":remote" /> + + + + + + + mAppUpdateData = new MutableLiveData<>(); + public SingleLiveEvent mAppUpdateData = new SingleLiveEvent<>(); - public void resetLiveData() { - mAppUpdateData = new MutableLiveData<>(); - } +// public void resetLiveData() { +// mAppUpdateData = new MutableLiveData<>(); +// } public void updateAppInfo(AppInfo appInfo) { Observable.fromCallable(new Callable() { diff --git a/app/src/main/java/com/ttstd/dialer/fragment/dialog/call/CallFragment.java b/app/src/main/java/com/ttstd/dialer/fragment/dialog/call/CallFragment.java index 49dc513..78c8b56 100644 --- a/app/src/main/java/com/ttstd/dialer/fragment/dialog/call/CallFragment.java +++ b/app/src/main/java/com/ttstd/dialer/fragment/dialog/call/CallFragment.java @@ -13,6 +13,7 @@ import android.view.Gravity; import android.view.View; import android.view.Window; import android.view.WindowManager; +import android.widget.Toast; import androidx.annotation.NonNull; import androidx.core.app.ActivityCompat; @@ -20,10 +21,14 @@ import androidx.fragment.app.DialogFragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; +import com.hjq.toast.Toaster; import com.ttstd.dialer.R; import com.ttstd.dialer.base.mvvm.fragment.BaseMvvmDialogFragment; import com.ttstd.dialer.databinding.FragmentCallBinding; import com.ttstd.dialer.db.contact.ContactInfo; +import com.ttstd.dialer.service.DialerAccessibilityService; +import com.ttstd.dialer.utils.AccessibilityServiceHelper; +import com.ttstd.dialer.utils.ApkUtils; public class CallFragment extends BaseMvvmDialogFragment { private static final String TAG = "CallFragment"; @@ -120,17 +125,36 @@ public class CallFragment extends BaseMvvmDialogFragment serviceClass) { + // 获取 AccessibilityManager 系统服务 + AccessibilityManager am = (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE); + if (am == null) { + return false; + } + + // 获取所有已启用的无障碍服务列表 + List enabledServices = am.getEnabledAccessibilityServiceList(AccessibilityServiceInfo.FEEDBACK_ALL_MASK); + + // 构建你服务的完整组件标识符 + String expectedServiceId = new ComponentName(context, serviceClass).flattenToShortString(); + Log.e(TAG, "isAccessibilityServiceEnabled: expectedServiceId = " + expectedServiceId); + for (AccessibilityServiceInfo serviceInfo : enabledServices) { + Log.e(TAG, "isAccessibilityServiceEnabled: serviceInfo.getId() = " + serviceInfo.getId()); + if (expectedServiceId.equals(serviceInfo.getId())) { + return true; + } + } + return false; + } + + /** + * 跳转到系统的无障碍服务设置页面 + * + * @param context 上下文对象 + */ + public static void jumpToAccessibilitySettings(Context context) { + try { + Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 通常从应用上下文启动时需要此标志 + String str = context.getPackageName() + "/com.ttstd.dialer.service." + DialerAccessibilityService.class.getCanonicalName(); + Bundle bundle = new Bundle(); + bundle.putString(":settings:fragment_args_key", str); + intent.putExtra(":settings:fragment_args_key", str); + intent.putExtra(":settings:show_fragment_args", bundle); + context.startActivity(intent); + } catch (Exception e) { + // 处理跳转失败的情况,例如某些设备可能没有标准的设置界面 + e.printStackTrace(); + // 可以尝试跳转到系统通用设置作为备选方案 + Intent fallbackIntent = new Intent(Settings.ACTION_SETTINGS); + fallbackIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + context.startActivity(fallbackIntent); + } + } + + +} diff --git a/app/src/main/java/com/ttstd/dialer/utils/ApkUtils.java b/app/src/main/java/com/ttstd/dialer/utils/ApkUtils.java index 5fd6fa3..d4f3cce 100644 --- a/app/src/main/java/com/ttstd/dialer/utils/ApkUtils.java +++ b/app/src/main/java/com/ttstd/dialer/utils/ApkUtils.java @@ -9,6 +9,7 @@ import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.graphics.drawable.Drawable; +import android.net.Uri; import android.text.TextUtils; import android.util.Log; @@ -176,4 +177,15 @@ public class ApkUtils { return isSystemApp; } + + public static void openAppStore(Context context, String pkg) { + Uri uri = Uri.parse("market://details?id=" + pkg); + Intent storeIntent = new Intent(Intent.ACTION_VIEW, uri); + storeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + try { + context.startActivity(storeIntent); + } catch (Exception e1) { + Log.e(TAG, "openWeixin storeIntent: " + e1.getMessage()); + } + } } diff --git a/app/src/main/res/drawable/ic_no_data.xml b/app/src/main/res/drawable/ic_no_data.xml new file mode 100644 index 0000000..d9b8644 --- /dev/null +++ b/app/src/main/res/drawable/ic_no_data.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/layout/layout_empty_contacts.xml b/app/src/main/res/layout/layout_empty_contacts.xml new file mode 100644 index 0000000..63d12a4 --- /dev/null +++ b/app/src/main/res/layout/layout_empty_contacts.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b0ae1f3..5607ceb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4,4 +4,7 @@ Hello blank fragment com.ttstd.dialer.view.ScrollAwareFABBehavior + + ❤拨号助手无障碍服务👈🏻 + 使用拨号助手一键拨号 diff --git a/app/src/main/res/xml/accessibility_service_config.xml b/app/src/main/res/xml/accessibility_service_config.xml new file mode 100644 index 0000000..c97bd3e --- /dev/null +++ b/app/src/main/res/xml/accessibility_service_config.xml @@ -0,0 +1,10 @@ + diff --git a/iconloader/build.gradle b/iconloader/build.gradle index e1550ec..bff5da9 100644 --- a/iconloader/build.gradle +++ b/iconloader/build.gradle @@ -15,10 +15,10 @@ android { } buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } + CrosshatchDebug {} + CrosshatchRelease {} + debug {} + release {} } } diff --git a/niceimageview/build.gradle b/niceimageview/build.gradle index 25dcbf5..7f768ff 100644 --- a/niceimageview/build.gradle +++ b/niceimageview/build.gradle @@ -9,32 +9,8 @@ android { } buildTypes { - iPlay50PDebug {} - iPlay50PRelease {} - U807Debug {} - U807Release {} - iPlay50Debug {} - iPlay50Release {} - zhanRuiDebug {} - zhanRuiRelease {} - iPlay50SEDebug {} - iPlay50SERelease {} - iPlay50ProDebug {} - iPlay50ProRelease {} - T1102Debug {} - T1102Release {} - iPlay50miniDebug {} - iPlay50miniRelease {} - iPlay5013Debug {} - iPlay5013Release {} - iPlay50miniProDebug {} - iPlay50miniProRelease {} - XPadDebug {} - XPadRelease {} - teclast8183Debug {} - teclast8183Release {} - G10PDebug {} - G10PRelease {} + CrosshatchDebug {} + CrosshatchRelease {} debug {} release {} }