0
package com.cydeon.plasmamodz;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Reader;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;

import com.cydeon.plasmamodz.R;

import android.app.ActionBar;
import android.app.Activity;
import android.app.DownloadManager;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

//Class for Boot Animation Blue Kindle
public class Boots extends Activity {

public static String TAG = "Boots";
Process process;

private class DownloadFile extends AsyncTask<String, Integer, String>{
    @Override
    protected String doInBackground(String... sURL) {
        try{
            URL url = new URL(sURL[0]);
            URLConnection connection = url.openConnection();
            connection.connect();
            //Shows 0-100% progress bar
            int fileLength = connection.getContentLength();

            //Download the file
            InputStream input = new BufferedInputStream(url.openStream());
            OutputStream output = new FileOutputStream("/sdcard/TWRP-Blaze-2.4.3.0-1.zip");

            byte data[] = new byte[1024];
            long total = 0;
            int count;
            while ((count = input.read(data)) != -1) {
                total += count;
                //Publish the Progress
                publishProgress((int) (total * 100/fileLength));
                output.write(data, 0, count);
                }

            output.flush();
            output.close();
            input.close();
    } catch (Exception e) {

    }
    return null;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        mProgressDialog.show();
    }

    @Override
    protected void onProgressUpdate(Integer... progress){
        super.onProgressUpdate(progress);
        mProgressDialog.setProgress(progress[0]);



    }

    @Override
    protected void onPostExecute(String result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
        mProgressDialog.dismiss();
        Context context = getApplicationContext();
        CharSequence text = "Installing. Please Wait";
        int duration = Toast.LENGTH_SHORT;

        Toast toast = Toast.makeText(context, text, duration);
        toast.show();

        try {
                Runtime rt = Runtime.getRuntime();
                Process proc = rt.exec("su");

                proc = rt.exec("sh /sdcard/boots.sh");
                InputStream is = proc.getInputStream();
                InputStreamReader isr = new InputStreamReader(is);
                BufferedReader br = new BufferedReader(isr);
                String line;

                while ((line = br.readLine()) != null){
                    System.out.println(line);
                }
        }catch (Throwable t){
            t.printStackTrace();
        }

    }
}

ProgressDialog mProgressDialog;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.boots);
    ActionBar actionBar = getActionBar();
    actionBar.hide();
    ImageView img = (ImageView) findViewById(R.id.iv2);
    img.setImageResource(R.drawable.boot1);
    Button install = (Button) findViewById(R.id.bAInstall);
    Button rtrn = (Button) findViewById(R.id.bAReturn);
    mProgressDialog = new ProgressDialog(Boots.this);
    mProgressDialog.setMessage("Downloading..." );
    mProgressDialog.setIndeterminate(false);
    mProgressDialog.setMax(100);
    mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

    install.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            DownloadFile downloadFile = new DownloadFile();
            downloadFile.execute("https://dl.dropbox.com/s/t16a0cq0qcon2ux/TWRP-Blaze-2.4.3.0-1.zip");



            }

        }
    );

    rtrn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            finish();
        }
    });

    }



   }

Sorry if I didn't search good enough. I have my code with me so I'll post it. Also, as you can probably see, I have no idea how to include a script in my app and then run it. I tried making a new folder and putting the script in it, but it doesn't work. Help on that would too be appreciated...

Edit: I got the first part to work. Now I cannot execute the script. su is executed, but my script is not. I also need to know where to put my script in my app, and then run that script. I'm not sure where the script will be when you install the app. And I don't know where to put the script. So help would be appreciated. Below(I guess above now.lol) is the updated code:

4

1 に答える 1

2

onPostExecute実行後の指示に使用できる方法があります。彼のパラメーターは、AsyncTask定義で出力として指定するものによって異なります。

出力を使用するには、doInBackgroundメソッドで何かを返す必要があります。使用する前に、この出力がnullかどうかを確認することをお勧めします。それはそれをするべきです=)

于 2013-03-03T06:44:35.803 に答える