首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LineageOS: Tasker函数"setActiveProfile(java.lang.String)“

LineageOS: Tasker函数"setActiveProfile(java.lang.String)“
EN

Stack Overflow用户
提问于 2017-03-12 10:38:57
回答 3查看 1.5K关注 0票数 1

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

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

  1. 创建一个Tasker任务"Java函数“:proman = cyanogenmod.app.ProfileManager.getInstance{cyanogenmod.app.ProfileManager} (上下文)
  2. 第二个"Java函数“:proman.setActiveProfile( %Newprofile )
  3. %Newprofile = "4G“的值

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

代码语言:javascript
复制
> 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

有人能给我个暗示来缩小我的错误吗?我想"proman“这个物体的创造出了问题。

谢谢。

编辑:类的源- sdk/blob/cm-14.1/sdk/src/java/cyanogenmod/app/ProfileManager.java

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-07-28 19:13:33

我知道这是一篇较旧的文章,但我无意中发现了这篇文章,因为我做了一些研究,以验证自LineageOS从最初的CM源派生出来后,API名称是否发生了变化,并希望提供一些有用的信息。

使用Tasker在LineageOS上设置系统配置文件不需要允许的LineageOS。我有一个可以在CM12或CM13上使用的Tasker配置文件,它仍然可以在LineageOS上工作,并且我的SELinux状态目前正在执行中。

LineageOS,AndroidV7.1.2

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

用Tasker在LineageOS中设置系统配置文件

代码语言:javascript
复制
<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>

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

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

票数 2
EN

Stack Overflow用户

发布于 2017-03-20 17:51:07

您可以在函数之前禁用SELinux,然后在Tasker中重新启用它。

我想我想要完成你想做的同样的事情,但我无法让它发挥作用。您能这么仁慈地发布Tasker中字段的所有值来创建proman对象吗?我好像漏掉了什么。

票数 0
EN

Stack Overflow用户

发布于 2017-03-22 09:20:34

对于那些想在任务(Android 7)中使用沿袭OS配置文件的人,您需要执行以下任务。注意:命令A1和A4禁用/启用SELinux。使用的变量%Newprofile等于谱系配置文件的名称(例如。"4G")。我在另一个任务中设置了变量。

代码语言:javascript
复制
A1: Run Shell [ Command:setenforce 0 Timeout (Seconds):0 Use Root:On Store Output In: Store Errors In: Store Result In: ] 
A2: Java Function [ Return:proman Class Or Object:cyanogenmod.app.ProfileManager Function:getInstance {cyanogenmod.app.ProfileManager} (Context) Param:CONTEXT Param: Param: Param: Param: Param: Param: ] 
A3: Java Function [ Return: Class Or Object:proman Function:setActiveProfile {} (String) Param:%Newprofile Param: Param: Param: Param: Param: Param: ] 
A4: Run Shell [ Command:setenforce 1 Timeout (Seconds):0 Use Root:On Store Output In: Store Errors In: Store Result In: ] 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42746368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档