java - 天堂操作系统 : Tasker Java Function "setActiveProfile(java.lang.String)"

标签 java android cyanogenmod tasker

我正在尝试通过任务任务设置 LineageOS 系统配置文件。我找到了一些 CM13 的示例,但我无法在 LineagesOS 上使用它。我不太喜欢 Java。

到目前为止我做了什么......

  1. 创建了一个 Tasker 任务“Java 函数”:proman = cyanogenmod.app.ProfileManager.getInstance{cyanogenmod.app.ProfileManager}(上下文)

  2. 第二个“Java 函数”:proman.setActiveProfile( %Newprofile )

  3. %Newprofile 的值 = "4G"

但我的任务日志中出现以下错误:

> 11.30.17/E Java Function:  -> 
> 11.30.17/JU analyse: target: proman expected: null
> 11.30.17/JU target: analyse done: proman: class: cyanogenmod.app.ProfileManager  obj: cyanogenmod.app.ProfileManager@1f3308e partWithoutMods: null static: false const false casted: false
> 11.30.17/JU analyse: returnval: java.lang.Void expected: null
> 11.30.17/JU returnval: analyse done: java.lang.Void: class: java.lang.Void  obj: null partWithoutMods: null static: true const false casted: false
> 11.30.17/JU initClass: class: java.lang.Void  obj: null partWithoutMods: java.lang.Void static: true const false casted: false
> 11.30.17/JU initClass: retnovar: init with array handling -> class java.lang.Void
> 11.30.17/JU initClass: class: cyanogenmod.app.ProfileManager  obj: cyanogenmod.app.ProfileManager@1f3308e partWithoutMods: proman static: false const false casted: false
> 11.30.17/JU initclass: target: use object class: cyanogenmod.app.ProfileManager
> 11.30.17/JU analyse: param0: %Newprofile expected: class java.lang.String
> 11.30.17/Variables doreplresult: |%Newprofile| -> |4G|
> 11.30.17/JU param0: analyse done: %Newprofile: class: java.lang.String  obj: 4G partWithoutMods: null static: false const true casted: false
> 11.30.17/E param 0 class: class java.lang.String
> 11.30.17/E targetClass: class cyanogenmod.app.ProfileManager
> 11.30.17/E object: cyanogenmod.app.ProfileManager@1f3308e
> 11.30.17/E method: public void cyanogenmod.app.ProfileManager.setActiveProfile(java.lang.String)
> 11.30.17/E arg0 class java.lang.String value 4G
> 11.30.17/E Java Function: java.lang.reflect.InvocationTargetException
> 11.30.17/ Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'boolean cyanogenmod.app.IProfileManager.setActiveProfileByName(java.lang.String)' on a null object reference
> 11.30.17/ cyanogenmod.app.ProfileManager.setActiveProfile(Unknown Source)
> 11.30.17/ java.lang.reflect.Method.invoke(Native Method)
> 11.30.17/ net.dinglisch.android.taskerm.ExecuteService.c(Unknown Source)
> 11.30.17/ net.dinglisch.android.taskerm.ExecuteService.a(Unknown Source)
> 11.30.17/ net.dinglisch.android.taskerm.ExecuteService.a(Unknown Source)
> 11.30.17/ net.dinglisch.android.taskerm.fd.run(Unknown Source)
> 11.30.17/E result: stop task (error)
> 11.30.17/E Error: 1
> 11.30.17/MacroEdit action finished exeID 1 action no 1 code 664 status: Err next 1

任何人都可以给 ma 一个提示来缩小我的错误范围吗?我猜对象“proman”的创建有问题。

谢谢。

编辑:类(class)来源 - https://github.com/LineageOS/cm_platform_sdk/blob/cm-14.1/sdk/src/java/cyanogenmod/app/ProfileManager.java

最佳答案

我知道这是一篇较旧的帖子,但我在做一些研究以验证 API 名称自 LineageOS 从原始 CM 源分拆以来是否发生变化时偶然发现了这篇帖子,我想提供一些我希望有用的东西信息。

使用 Tasker 在 LineageOS 上设置系统配置文件不需要宽松的 SELinux。我有一个自 CM12 或 CM13 以来仍然在 LineageOS 上运行的 Tasker 配置文件,并且我的 SELinux 状态当前为 Enforcing。

天堂操作系统,安卓 v7.1.2

附件是显示 Java 逻辑的屏幕截图,我将在下面包含任务的完整 XML。

Setting System Profile in LineageOS with Tasker

<TaskerData sr="" dvi="1" tv="5.0u2m">
    <Task sr="task9">
        <cdate>1420510419053</cdate>
        <edate>1501266948615</edate>
        <id>9</id>
        <nme>Set CM Profile</nme>
        <pri>100</pri>
        <Action sr="act0" ve="7">
            <code>547</code>
            <Str sr="arg0" ve="3">%profile</Str>
            <Str sr="arg1" ve="3">%par1</Str>
            <Int sr="arg2" val="0"/>
            <Int sr="arg3" val="0"/>
            <Int sr="arg4" val="0"/>
        </Action>
        <Action sr="act1" ve="7">
            <code>664</code>
            <Str sr="arg0" ve="3">ps</Str>
            <Str sr="arg1" ve="3">cyanogenmod.app.ProfileManager</Str>
            <Str sr="arg2" ve="3">getService {cyanogenmod.app.IProfileManager} ()</Str>
            <Str sr="arg3" ve="3">profile</Str>
            <Str sr="arg4" ve="3"/>
            <Str sr="arg5" ve="3"/>
            <Str sr="arg6" ve="3"/>
            <Str sr="arg7" ve="3"/>
            <Str sr="arg8" ve="3"/>
            <Str sr="arg9" ve="3"/>
        </Action>
        <Action sr="act2" ve="7">
            <code>664</code>
            <Str sr="arg0" ve="3">%returnValue</Str>
            <Str sr="arg1" ve="3">ps</Str>
            <Str sr="arg2" ve="3">setActiveProfileByName {boolean} (String)</Str>
            <Str sr="arg3" ve="3">%profile</Str>
            <Str sr="arg4" ve="3"/>
            <Str sr="arg5" ve="3"/>
            <Str sr="arg6" ve="3"/>
            <Str sr="arg7" ve="3"/>
            <Str sr="arg8" ve="3"/>
            <Str sr="arg9" ve="3"/>
        </Action>
        <Img sr="icn" ve="2">
            <nme>hl_aaa_ext_barcode_1</nme>
        </Img>
    </Task>
</TaskerData>

注意:这是一个通用任务,它采用配置文件的名称并尝试将系统配置文件设置为与传入参数匹配的配置文件。这需要其他任务向该任务发送特定字符串。

上面链接的最终屏幕截图显示使用另一个任务并传递您要设置的配置文件的名称。

关于java - 天堂操作系统 : Tasker Java Function "setActiveProfile(java.lang.String)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42746368/

相关文章:

android - Android-应用程序崩溃

android-source - 为 Desire S 构建 AOSP

Java Paint() 问题

android - Tesseract 在 android 中的最大识别时间

java - 等待 GPS 修复对话框抛出错误 token 异常 - Android

android - Canvas.drawVertices(...) 什么都不画

android - 亚行 |设备连接出现问题

java - 在尝试创建 JFileChooser——公共(public)变量?

java - 从其他项目注册EntityManager

java - 插件管理没有父pom的版本