“通过 Provider 使用 FreezeYou 进行冻结解冻以及数据查询等操作”的版本间的差异

来自Wiki - Playhi!
跳转至: 导航搜索
第58行: 第58行:
 
|-
 
|-
 
| 进行冻结应用操作 || Uri.parse("content://cf.playhi.freezeyou.export.FREEZE") || "MODE_AUTO"或"MODE_ROOT"或"MODE_MROOT" || 不适用 || Bundle,键 packageName 必须包含被冻结的应用包名
 
| 进行冻结应用操作 || Uri.parse("content://cf.playhi.freezeyou.export.FREEZE") || "MODE_AUTO"或"MODE_ROOT"或"MODE_MROOT" || 不适用 || Bundle,键 packageName 必须包含被冻结的应用包名
 +
|-
 +
|}
 +
 +
== 返回数据 ==
 +
!! 如果对应键值为 <code>null</code>,则检查请求时的 <code>Method</code> 以及 <code>Extras</code> 是否为 <code>null</code> 。
 +
{| class="wikitable"
 +
|-
 +
! 返回值 !! 获取当前运行模式(键 currentMode ) !! 获取应用是否被冻结(键 status ) !! 进行解冻应用操作(键 result ) !! 进行冻结应用操作(键 result )
 +
|-
 +
| dpm || DPM(免ROOT)模式(ROOT模式可能可用) || 不适用 || 不适用 || 不适用
 +
|-
 +
| root || ROOT模式(DPM模式不可用) || 不适用 || 不适用 || 不适用
 +
|-
 +
| unavailable || DPM 与 ROOT 模式均不可用 || 不适用 || 不适用 || 不适用
 +
|-
 +
| -4 || 不适用 || 不适用 || ROOT 模式解冻失败 || ROOT 模式冻结失败
 +
|-
 +
| -3 || 不适用 || 不适用 || DPM 模式解冻失败 || DPM 模式冻结失败
 +
|-
 +
| -2 || 不适用 || Bundle 中 packageName 键值为 null || Bundle 中 packageName 键值为 null || Bundle 中 packageName 键值为 null
 +
|-
 +
| -1 || 不适用 || 自冻(FreezeYou) 内部错误 || 自冻(FreezeYou) 内部错误 || 自冻(FreezeYou) 内部错误
 +
|-
 +
| 0 || 不适用 || 未冻结 || 解冻成功 || 冻结成功
 +
|-
 +
| 1 || 不适用 || ROOT 模式冻结 || 不适用 || 不适用
 +
|-
 +
| 2 || 不适用 || DPM 模式冻结 || 不适用 || 不适用
 +
|-
 +
| 3 || 不适用 || DPM + ROOT 双模式冻结 || 不适用 || 不适用
 +
|-
 +
| 999 || 不适用 || 不适用 || 检查发现未冻结,无需解冻 || 检查发现未解冻,无需冻结
 
|-
 
|-
 
|}
 
|}

2019年8月10日 (六) 16:19的版本

版本要求

  • 自冻(FreezeYou) 版本不小于 9.0

授权范围

  • 获取当前自冻(FreezeYou)的运行模式、获取已冻结应用列表、进行冻结应用操作、进行解冻应用操作。

如何使用

声明权限

  • 需要在AndroidManifest.xml中声明权限(按需申请)
    • 获取当前 自冻(FreezeYou) 的运行模式:
      <uses-permission android:name="cf.playhi.freezeyou.permission.QUERY_STATUS" />
    • 获取应用是否被冻结:
      <uses-permission android:name="cf.playhi.freezeyou.permission.QUERY_STATUS" />
    • 进行解冻应用操作:
      <uses-permission android:name="cf.playhi.freezeyou.permission.ENABLE_APPLICATIONS" />
    • 进行冻结应用操作:
      <uses-permission android:name="cf.playhi.freezeyou.permission.DISABLE_APPLICATIONS" />

代码示例

  • 获取当前运行模式:
    Bundle resultBundle = getContentResolver().call(
        Uri.parse("content://cf.playhi.freezeyou.export.QUERY"), "QUERY_MODE", null, new Bundle());
    String currentMode = resultBundle.getString("currentMode", "Failed");
  • 获取应用是否被冻结:
    Bundle willBeSend = new Bundle();
    willBeSend.putString("packageName", packageName);
    Bundle resultBundle = getContentResolver().call(
         Uri.parse("content://cf.playhi.freezeyou.export.QUERY"), "QUERY_FREEZE_STATUS", null, willBeSend);
    int resultStatusCode = resultBundle.getInt("status", 123456);
  • 进行解冻应用操作:
    Bundle willBeSend = new Bundle();
    willBeSend.putString("packageName", pkgName);
    Bundle resultBundle = getContentResolver().call(
        Uri.parse("content://cf.playhi.freezeyou.export.UNFREEZE"), "MODE_AUTO", null, willBeSend);
    int resultCode = resultBundle.getInt("result", 123456);
  • 进行冻结应用操作:
    Bundle willBeSend = new Bundle();
    willBeSend.putString("packageName", pkgName);
    Bundle resultBundle = getContentResolver().call(
        Uri.parse("content://cf.playhi.freezeyou.export.FREEZE"), "MODE_AUTO", null, willBeSend);
    int resultCode = resultBundle.getInt("result", 123456);

开发实例

参数要求

用途 Uri Method Arg Extras
获取当前运行模式 Uri.parse("content://cf.playhi.freezeyou.export.QUERY") "QUERY_MODE" 不适用 空 Bundle
获取应用是否被冻结 Uri.parse("content://cf.playhi.freezeyou.export.QUERY") "QUERY_FREEZE_STATUS" 不适用 Bundle,键 packageName 必须包含被查询的应用包名
进行解冻应用操作 Uri.parse("content://cf.playhi.freezeyou.export.UNFREEZE") "MODE_AUTO"或"MODE_ROOT"或"MODE_MROOT" 不适用 Bundle,键 packageName 必须包含被解冻的应用包名
进行冻结应用操作 Uri.parse("content://cf.playhi.freezeyou.export.FREEZE") "MODE_AUTO"或"MODE_ROOT"或"MODE_MROOT" 不适用 Bundle,键 packageName 必须包含被冻结的应用包名

返回数据

!! 如果对应键值为 null,则检查请求时的 Method 以及 Extras 是否为 null

返回值 获取当前运行模式(键 currentMode ) 获取应用是否被冻结(键 status ) 进行解冻应用操作(键 result ) 进行冻结应用操作(键 result )
dpm DPM(免ROOT)模式(ROOT模式可能可用) 不适用 不适用 不适用
root ROOT模式(DPM模式不可用) 不适用 不适用 不适用
unavailable DPM 与 ROOT 模式均不可用 不适用 不适用 不适用
-4 不适用 不适用 ROOT 模式解冻失败 ROOT 模式冻结失败
-3 不适用 不适用 DPM 模式解冻失败 DPM 模式冻结失败
-2 不适用 Bundle 中 packageName 键值为 null Bundle 中 packageName 键值为 null Bundle 中 packageName 键值为 null
-1 不适用 自冻(FreezeYou) 内部错误 自冻(FreezeYou) 内部错误 自冻(FreezeYou) 内部错误
0 不适用 未冻结 解冻成功 冻结成功
1 不适用 ROOT 模式冻结 不适用 不适用
2 不适用 DPM 模式冻结 不适用 不适用
3 不适用 DPM + ROOT 双模式冻结 不适用 不适用
999 不适用 不适用 检查发现未冻结,无需解冻 检查发现未解冻,无需冻结

常见问题

SecurityException

  • 是否已经在 Manifest 中声明了权限呢(冻结\解冻应用还需要类似请求敏感权限一样进行requestPermissions

目前局限

  • 需要在安装FreezeYou后再安装或更新(覆盖安装)使用相关权限的应用,否则可能会报 Exception (在 Android Google 的文档中有提及需要在请求前安装)