开发安卓软件怎样按下按钮直接执行shell命令并返回对话框数值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开发安卓软件怎样按下按钮直接执行shell命令并返回对话框数值?相关的知识,希望对你有一定的参考价值。

开发安卓软件怎样按下按钮直接执行shell命令并返回对话框数值?开发一个软件,我想在软件里添加几个按钮,按下去就能执行我指定好的shell命令,并且返回对话框数值,这个可以实现吗?如果可以,教教我吧~

多简单的问题
添加个button然后点击事件执行shell就行啦追问

这个我知道,但是执行SHELL的代码是什么

追答

public final void exec(String cmd)
try
if (os == null)
os = Runtime.getRuntime().exec("su").getOutputStream();

os.write(cmd.getBytes());
os.flush();
catch (Exception e)
e.printStackTrace();

参考技术A 教你可以呀!

按下按钮时有多个命令

【中文标题】按下按钮时有多个命令【英文标题】:Have multiple commands when button is pressed 【发布时间】:2012-12-01 15:32:34 【问题描述】:

我想在单击按钮时运行多个功能。例如,我希望我的按钮看起来像

self.testButton = Button(self, text = "test", 
                         command = func1(), command = func2())

当我执行这个语句时,我得到一个错误,因为我不能两次为一个参数分配一些东西。如何让命令执行多个功能。

【问题讨论】:

【参考方案1】:
def func1(evt=None):
    do_something1()
    do_something2()
    ...

self.testButton = Button(self, text = "test", 
                         command = func1)

也许?

我想也许你可以做类似的事情

self.testButton = Button(self, text = "test", 
                         command = lambda x:func1() & func2())

但这真的很恶心......

【讨论】:

定义一个函数来做你想做的事情可能是最好的解决方案。将一些逻辑放在按钮本身中让我觉得很恶心,而且以后还有潜在的维护问题。【参考方案2】:

你可以创建一个通用函数来组合函数,它可能看起来像这样:

def combine_funcs(*funcs):
    def combined_func(*args, **kwargs):
        for f in funcs:
            f(*args, **kwargs)
    return combined_func

然后你可以像这样创建你的按钮:

self.testButton = Button(self, text = "test", 
                         command = combine_funcs(func1, func2))

【讨论】:

如果 combine_funcs 是类中的方法怎么办?如果我写 def combine_funcs(self, *funcs): 我得到一个错误 `TypeError: my_first_func() 需要 1 个位置参数但给出了 2 个【参考方案3】:

您可以为此使用 lambda:

self.testButton = Button(self, text = "test", lambda: [f() for f in [func1, funct2]])

【讨论】:

【参考方案4】:

您可以像这样简单地使用 lambda:

self.testButton = Button(self, text=" test", command=lambda:[funct1(),funct2()])

【讨论】:

【参考方案5】:

Button(self, text="text", command=func_1()and func_2)

【讨论】:

虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。【参考方案6】:

我也发现了这个,它对我有用。在这样的情况下......

b1 = Button(master, text='FirstC', command=firstCommand)
b1.pack(side=LEFT, padx=5, pady=15)

b2 = Button(master, text='SecondC', command=secondCommand)
b2.pack(side=LEFT, padx=5, pady=10)

master.mainloop()

...你可以做...

b1 = Button(master, command=firstCommand)
b1 = Button(master, text='SecondC', command=secondCommand)
b1.pack(side=LEFT, padx=5, pady=15)

master.mainloop()

我所做的只是将第二个变量 b2 重命名为与第一个 b1 相同的名称,并在解决方案中删除第一个按钮文本(因此只有第二个是可见的,并将作为一个单独的)。

我也尝试了函数解决方案,但由于一个模糊的原因,它对我不起作用。

【讨论】:

【参考方案7】:

这是一个简短的示例:按下下一个按钮时,它将在 1 个命令选项中执行 2 个功能

    from tkinter import *
    window=Tk()
    v=StringVar()
    def create_window():
           next_window=Tk()
           next_window.mainloop()

    def To_the_nextwindow():
        v.set("next window")
        create_window()
   label=Label(window,textvariable=v)
   NextButton=Button(window,text="Next",command=To_the_nextwindow)

   label.pack()
   NextButton.pack()
   window.mainloop()

【讨论】:

【参考方案8】:

我认为使用 lambda 运行多个函数的最佳方式。

这里是一个例子:

button1 = Button(window,text="Run", command = lambda:[fun1(),fun2(),fun3()])

【讨论】:

【参考方案9】:

检查一下,我已经尝试过这种方法,因为我遇到了同样的问题。这对我有用。

def all():
    func1():
        opeartion
    funct2():
        opeartion
    for i in range(1):
        func1()
        func2()

self.testButton = Button(self, text = "test", command = all)

【讨论】:

以上是关于开发安卓软件怎样按下按钮直接执行shell命令并返回对话框数值?的主要内容,如果未能解决你的问题,请参考以下文章

使用shell脚本实现批处理安装apk

linux下怎样登录ftp服务器

linux用shell命令怎样清理系统缓存

安卓手机怎样群发短信?

linuxshell 脚本执行的过程是怎样的?

能用adb命令查看安卓手机根目录么