Как преобразовать Java-класс, который использует аргумент командной строки для использования в Android? - PullRequest
0 голосов
/ 22 февраля 2012

У меня проблема с классом Java, который использует аргумент командной строки, и я должен использовать этот класс в своем приложении для Android.Моя проблема заключается в том, как я могу передать аргумент в Android или любой другой способ использовать этот файл в приложении для Android путем ручного ввода аргументов?

Это класс JAVA, который я должен использовать в Android:

public class VideoListExample 
{
    ///////////////////////////////////////////////////////////////////////////

    public static void main(String[] args) {
        try {
            ParameterHelper helper = new ParameterHelper(args);
            args = helper.getRemainingArgs();
            if(args.length > 2) {
                printUsage();
                System.exit(1);
                return;
            }

            String titleSearch = null;
            if(args.length == 2) {
                titleSearch = args[1];
            }

            Vzaar vzaar = helper.createVzaar();

            VideoListRequest request = new VideoListRequest(args[0]);
            request.setPage(1);
            request.setSize(true);
            request.setCount(100);
            request.setSortAscending(true);
            request.setTitleSearch(titleSearch);

            List<Video> videoList = null;
            while(!(videoList = vzaar.getVideoList(request)).isEmpty()) 
            {
                for(Video video : videoList) {
                    System.out.println(
                        "ID=" + video.getId() +
                        ", Created=" + video.getCreatedAt() +
                        ", Size=" + video.getWidth() + "x" + video.getHeight() +
                        ", Duration=" + video.getDuration() + "s" +
                        ", Play Count=" + video.getPlayCount() +
                        ", URL=" + video.getUrl() +
                        ", Title=" + video.getTitle());
                }

                if(videoList.size() < 100) break;
                request.setPage(request.getPage() + 1);
            }
        }
        catch(VzaarException e) {
            System.err.println("Error: " + e.getMessage());
            System.exit(2);
        }
        catch(ArrayIndexOutOfBoundsException e) {
            printUsage();
            System.exit(1);
        }
        catch(NumberFormatException e) {
            printUsage();
            System.exit(1);
        }
    }

    ///////////////////////////////////////////////////////////////////////////

    private static final  void printUsage() {
        System.out.println("Usage: vzaar-list " +
            ParameterHelper.getCommonCommandLineArgs() + 
            " <username> [<title-search>]\n");
        System.out.println("Params:");
        System.out.println("   <username>          " +
        "The user name to fetch active videos for");
        System.out.println("   <title-search>      " +
            "Return only videos with title containing given string");
        System.out.println(ParameterHelper.getCommonCommandLineHelp());
    }

    ///////////////////////////////////////////////////////////////////////////
}

и аргументы должны быть переданы следующим образом:

java_class [-debug] [-ssl3] [-transport hc3|hc4] [-url <url>] [-oatoken <token>] [-oasecret <secret>] <username> [<title-search>]

и мне нужно передать только эти три аргумента:

java_class [-oatoken <token>] [-oasecret <secret>] <username> 

Ответы [ 2 ]

5 голосов
/ 22 февраля 2012

Вообще говоря, вам нужно будет создать пользовательский интерфейс, в котором пользователь сможет вводить все значения.

Затем добавьте кнопку, которая преобразует эти значения в массив String и которая вызывает main()

Более чистым решением было бы скопировать строки в новый объект "config" и заставить кнопку заполнить тот же объект config. Затем вы можете написать метод, который принимает объект конфигурации в качестве параметра.

0 голосов
/ 22 февраля 2012

Это не лучший способ, но я думаю, что следующее будет простым и быстрым решением:

Во-первых, дайте подходящее имя для вашей функции main. Затем используйте varargs вместо String array в качестве аргумента. Кроме того, создайте исключение соответствующего типа, если вы встретите недопустимые аргументы (например, IllegalArgumentException).

Итак, перепишите main как

public static void listVideos(String ... args) throws IllegalArgumentException

Также замените System.exit(1) на

throw new IllegalArgumentException("Invalid arguments!");

Теперь вы можете использовать код как:

VideoListExample.listVideos("-oatoken", "<token>", 
                            "-oasecret", "<secret>", "<username>");
...