2015-01-16 5 views
16

Es gibt einen Befehl zum Starten einer Aktivität basierend auf der Absicht: am start. Um auch eine Sendung zu senden: .Android-Inhaltsanbieter über die Befehlszeile abfragen (AdB-Shell)

Ich denke, wahrscheinlich sollte es ein Shell-Befehl, einen Content-Provider abzufragen, wahrscheinlich so etwas wie:

query content://com.myapp.authority/path --where 'column=?' --arg 1 --order 'column desc' 

oder ähnliches.

Gibt es eins?

+0

Wie kann ich meine Anwendung sicher vor solchen bösartigen Injektion von Daten ?, dh wie machen seine immun gegen „adb shell Inhalt einfügen --uri“ –

Antwort

27

Es gibt einen content Befehl lautet:

usage: adb shell content [subcommand] [options] 

usage: adb shell content insert --uri <URI> [--user <USER_ID>] --bind <BINDING> [--bind <BINDING>...] 
    <URI> a content provider URI. 
    <BINDING> binds a typed value to a column and is formatted: 
    <COLUMN_NAME>:<TYPE>:<COLUMN_VALUE> where: 
    <TYPE> specifies data type such as: 
    b - boolean, s - string, i - integer, l - long, f - float, d - double 
    Note: Omit the value for passing an empty string, e.g column:s: 
    Example: 
    # Add "new_setting" secure setting with value "new_value". 
    adb shell content insert --uri content://settings/secure --bind name:s:new_setting --bind value:s:new_value 

usage: adb shell content update --uri <URI> [--user <USER_ID>] [--where <WHERE>] 
    <WHERE> is a SQL style where clause in quotes (You have to escape single quotes - see example below). 
    Example: 
    # Change "new_setting" secure setting to "newer_value". 
    adb shell content update --uri content://settings/secure --bind value:s:newer_value --where "name='new_setting'" 

usage: adb shell content delete --uri <URI> [--user <USER_ID>] --bind <BINDING> [--bind <BINDING>...] [--where <WHERE>] 
    Example: 
    # Remove "new_setting" secure setting. 
    adb shell content delete --uri content://settings/secure --where "name='new_setting'" 

usage: adb shell content query --uri <URI> [--user <USER_ID>] [--projection <PROJECTION>] [--where <WHERE>] [--sort <SORT_ORDER>] 
    <PROJECTION> is a list of colon separated column names and is formatted: 
    <COLUMN_NAME>[:<COLUMN_NAME>...] 
    <SORT_ORDER> is the order in which rows in the result should be sorted. 
    Example: 
    # Select "name" and "value" columns from secure settings where "name" is equal to "new_setting" and sort the result by name in ascending order. 
    adb shell content query --uri content://settings/secure --projection name:value --where "name='new_setting'" --sort "name ASC" 

usage: adb shell content call --uri <URI> --method <METHOD> [--arg <ARG>] 
     [--extra <BINDING> ...] 
    <METHOD> is the name of a provider-defined method 
    <ARG> is an optional string argument 
    <BINDING> is like --bind above, typed data of the form <KEY>:{b,s,i,l,f,d}:<VAL> 
+0

Wie kann ich Machen Sie meine Anwendung vor einer solchen bösartigen Dateninjektion sicher, dh wie ist man immun gegen "adb shell content insert --uri"? –

+0

Um die Contentprovider zu schützen, die Erlaubnis Nutzung AndroidManifest.xml hinzufügen, so etwas wie dieses: '' '' ' ' – dkneller

+0

Ich versuche, Bildschirmausrichtung mit dieser Abfrage zu erhalten, aber es funktioniert nicht. Mein Befehl 'adb Shell-Inhaltsabfrage --uri content: // settings/system -projection name: Wert --where" name = 'user_rotation' "' – kanna

Verwandte Themen