Android 通过adb发广播的形式开启activity

Android中有很多时候需要通过adb中打开一个界面,这个时候就需要通过发广播的形式,开启一个界面了例如通过广播开启一个特定界面

adb shell am broadcast -a android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS

adb shell am具体参数如下

am  
usage: am [subcommand] [options]  

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

    start a Service: am startservice   

    send a broadcast Intent: am broadcast   

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

    start profiling: am profile  start   
    stop profiling: am profile  stop  

     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>]  

总结下adb shell am 用法

adb shell am activity/service/broadcast -a ACTION -c CATEGORY -n NAME

1、启动activity/service
在adb shell中,通过am命令行启动一个Activity程序:

am start -a android.intent.action.MAIN -n com.koushikdutta.superuser/com.koushikdutta.superuser.SuperuserRequestActivity --ei uid %d --ei pid %d
-a 表示action (android.intent.action.MAIN)
-n 表示packagename (com.koushikdutta.superuser)
SuperuserRequestActivity是对应的Activity name

在清单文件中

<manifest xmlns:android="http://schemas.android.com/apk/res/android"  
    android:versionCode="4" android:versionName="1.0.3" package="com.koushikdutta.superuser">  
    <application android:icon="@drawable/icon" android:label="@string/app_name"  
        android:debuggable="true">  
        <activity android:name=".SuperuserActivity" android:label="Superuser Whitelist">  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />  
                <category android:name="android.intent.category.LAUNCHER" />  
            intent-filter>  
        activity>  
        <activity android:name=".SuperuserRequestActivity">  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />  
                <category android:name="android.intent.category.DEFAULT" />  
            intent-filter>  
        activity>  
    application>  
manifest>   

2、发送broadcast,比如在模拟器中发生关机的broadcast

F:\>adb shell am broadcast -a android.intent.action.ACTION_SHUTDOWN -c android.intent.category.HOME
-n com.andy.androidtest/.ShutdownBroadcastReceiver

结果:

Broadcasting: Intent { act=android.intent.action.ACTION_SHUTDOWN cat=[android.intent.category.HOME]
cmp=com.andy.androidtest/.ShutdownBroadcastReceiver }
Broadcast completed: result=0

相关源代码:ShutdownBroadcastReceiver.java

public class ShutdownBroadcastReceiver extends BroadcastReceiver { 
    private static final String TAG = "ShutdownBroadcastReceiver";  
    public ShutdownBroadcastReceiver(){      
    }  
    //Once boot completed,start server  
    public void onReceive(Context context, Intent intent) {  
        String action = intent.getAction();  
        if (action.equals(Intent.ACTION_SHUTDOWN)) {  
            //Toast.makeText(context, "Ready to shutdown....", 1000);             
            Log.v(TAG,"action:"+action);  
        }  
    }  
}  

AndroidManifest.xml:

<receiver android:name=".ShutdownBroadcastReceiver" >  
      <intent-filter>  
          <action android:name="android.intent.action.ACTIOIN_SHUTDOWN" />  
          <action android:name="android.intent.action.QUICKBOOT_POWEROFF" />                 
      intent-filter>  
receiver>  

你可能感兴趣的:(android,shell,界面,adb)