1. 程式人生 > >Android,java傳送intent,native c/c++傳送intent, am命令列執行程式。

Android,java傳送intent,native c/c++傳送intent, am命令列執行程式。

先來看看google如何表述的:

一個Intent就是要執行的操作的抽象描述,是Android裡很重要的,完成Android各個元件之間的通訊。

例如:啟動一個Activity.

Intent intent = new Intent();
intent.setClassName("com.android.browser.ProxySelector");
startActivity(intent);

Java傳送一個Intent相信大家都很熟悉,那我們如何在Native層的程式碼裡如何傳送呢,比如在C中傳送。其實Android提供了一個工具am,是命令列執行Android程式等。所以傳送一個Intent就容易的多了:

char intent[1024] = {0};

sprintf(intent, "am start -a com.android.browser.ProxySelector);

system(intent);

順便介紹下am:

EMMA: collecting runtime coverage data ...
usage: am [subcommand] [options]

    start an Activity: am start [-D] [-W] <INTENT>
        -D: enable debugging
        -W: wait for launch to complete

    start a Service: am startservice <INTENT>

    send a broadcast Intent: am broadcast <INTENT>

    start an Instrumentation: am instrument [flags] <COMPONENT>
        -r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT)
        -e <NAME> <VALUE>: set argument <NAME> to <VALUE>
        -p <FILE>: write profiling data to <FILE>
        -w: wait for instrumentation to finish before returning

    start profiling: am profile <PROCESS> start <FILE>
    stop profiling: am profile <PROCESS> stop

    start monitoring: am monitor [--gdb <port>]
        --gdb: start gdbserv on the given port at crash/ANR

    <INTENT> specifications include these flags:
        [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]
        [-c <CATEGORY> [-c <CATEGORY>] ...]
        [-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]
        [--esn <EXTRA_KEY> ...]
        [--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...]
        [-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]
        [-n <COMPONENT>] [-f <FLAGS>]
        [--grant-read-uri-permission] [--grant-write-uri-permission]
        [--debug-log-resolution]
        [--activity-brought-to-front] [--activity-clear-top]
        [--activity-clear-when-task-reset] [--activity-exclude-from-recents]
        [--activity-launched-from-history] [--activity-multiple-task]
        [--activity-no-animation] [--activity-no-history]
        [--activity-no-user-action] [--activity-previous-is-top]
        [--activity-reorder-to-front] [--activity-reset-task-if-needed]
        [--activity-single-top]
        [--receiver-registered-only] [--receiver-replace-pending]
        [<URI>]

---

原來也是如此簡單的。