使用Android应用程序运行脚本

14ifxucb  于 2023-03-06  发布在  Android
关注(0)|答案(4)|浏览(239)

我有这个shell脚本:

#!system/bin/sh
while :
do
sync
echo 3> /proc/sys/vm/drop_caches
echo "Script is been launched"
sleep 30m
done
exit 0;

我想运行这个脚本与一个android应用程序。我已经创建了一个按钮,现在只有一个吐司词。我如何采取脚本(free.sh),并启动它与按钮上的应用程序?或者有一个解决方案,以重写代码在java中?谢谢

r3i60tvu

r3i60tvu1#

首先,您将使用Eclipse创建一个简单的Android Hello World应用程序,并在布局中添加一个按钮。这是Android开发的一个非常初步的实践,您可以从http://d.android.com中获得更多信息
请在按钮的OnClick回调函数中尝试以下代码:

Button b = findViewById(R.id.buttonPower);

b.setOnClickListener(new OnClickListener() {

       @Override
       public void onClick(View arg0) {
            Process p=null;
            try {
               p = new ProcessBuilder()
                    .command("PathToYourScript")
                    .start();
             } catch (IOException e) {
                e.printStackTrace();
             } finally {
                if(p!=null) p.destroy();
             }
        }
 });
tag5nh1u

tag5nh1u2#

下面介绍如何从android应用程序运行shell脚本

try {
       Process process = Runtime.getRuntime().exec("sh /sdcard/test.sh");
       BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
       String listOfFiles = "";
       String line;
       while ((line = in.readLine()) != null) {
                listOfFiles += line;
       }
 }
 catch (IOException e) {
       e.printStackTrace();
 }
xlpyo6sf

xlpyo6sf3#

我的代码中有错误:

import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

import com.example.toast.R;

public class MainActivity extends Activity {

    private Button button;

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.tab1);

        button = (Button) findViewById(R.id.button1);

        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                Process process = new ProcessBuilder()
                .command("PATH")
                .redirectErrorStream(true)
                .start();
                try {
                    InputStream in = process.getInputStream();
                    OutputStream out = process.getOutputStream();
                    readStream(in);// Here: Syntax error, insert "}" to complete `Block`

                finally {
                    process.destroy();
                }
            }
        }
        }); //Here: Syntax error on token "}", delete this token
    }

    protected void readStream(InputStream in) {
        // TODO Auto-generated method stub
    }
}
fd3cxomn

fd3cxomn4#

那么,现在没有错误(谢谢!),但什么也不做..尝试我已经写了一个简单的脚本,写一个file.txt.

public class MainActivity extends Activity {

    private Button button;

    public void onCreate(Bundle savedInstanceState) {

         super.onCreate(savedInstanceState);
         setContentView(R.layout.tab1);

         button = findViewById(R.id.button1);
         button.setOnClickListener(new OnClickListener() {
        
              @SuppressLint("SdCardPath")
              @Override
              public void onClick(View arg0) {
                    Process p=null;
                    try {
                         p = new ProcessBuilder()
                              .command("/sdcard/Script/scritturafile.sh")
                              .start();
                     } catch (IOException e) {
                          e.printStackTrace();
                     } finally {
                         if(p!=null) p.destroy();
                     }
               }
          });
     }
}

没有错误,但当我按下按钮时,我认为 shell 没有运行,因此不要创建file.txt

相关问题