Android ADB Open URL in current tab/close previous tabs - android

I am currently using the following to open a tab in the native browser on an android device
adb shell am start -a "android.intent.action.VIEW" -d "http://google.co.uk"
The issue I have is that each time the command is sent it open a new tabs. To combat this I have tried to kill the browser in an attempt to start again howevre, the previous tab are remembered.
adb shell am force-stop com.android.browser
I did previously try a kill, but this did not seem to work
adb shell am kill com.android.browser
I did some quick reading and found the option create_new_tab but I believe this to be for chrome and not the native browser.
adb shell am start -a "android.intent.action.VIEW" -d "http://google.co.uk" --ez create_new_tab false
Does anyone know how a single tab can be used and either open a tab if one does not exist, or use the existing one if it does. I am using windows command line.

I was able to reuse the same browser tab with the following command:
adb shell am start -a "android.intent.action.VIEW" -d "http://www.google.com" --es "com.android.browser.application_id" "com.package.name"
Some documentation can be found here:
https://developer.android.com/reference/android/provider/Browser.html#EXTRA_APPLICATION_ID

Related

How to launch AFW badge apps from adb shell command?

I am unable to launch Android For work enabled apps from Adb shell command?
Can some one plz give example?
Refer attached screen, I want to launch Playstore app.
Without badge ICON play store app has the same activity info with the badged playstore app as well(com.android.vending/com.google.android.finsky.activities.MainActivity).
And I am unable to launch the Badge play store activity. Please help me.
I have tried by using below command:
adb shell am start com.android.vending/com.google.android.finsky.activities.MainActivity
It is always launching Non-Badged playstore app only.
Then I have tried as per the AFW blog by Google:
https://developer.android.com/work/managed-profiles.html
adb shell pm list users
UserInfo{0:Drew:13} running
UserInfo{10:Work profile:30} running
adb shell am start --user 10 -n "com.android.vending/com.google.android.finsky.activities.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
So, I got the java.lang.SecurityException: Shell does not have permission to access user 10 error. Please someone help me.
I have found a way to launch the Apps.
Make the app in debug mode and add clearUserRestriction of the provision client as below.
dpm.clearUserRestriction(adminName,UserManager.DISALLOW_DEBUGGING_FEATURES
if we have these changes then I am able to launch the Android For Work badged apps by using the below commands. Where the --user 10 is the AFW Provisioned User.
adb shell am start --user 10 -n
"com.android.vending/com.google.android.finsky.activities.MainActivity"
-a android.intent.action.MAIN -c android.intent.category.LAUNCHER

How to launch android gallery app using adb shell?

I tried a lot and got
adb shell am start -a android.intent.action.MAIN -n com.android.browser/.BrowserActivity
for launching browser so I tried the same with gallery and I'm stuck with this
adb shell am start -a android.intent.action.MAIN -n com.sec.android.gallery3d/.GalleryActivity</b><br/>
I know GalleryActivity is not available but what else can i use?
Note: I am using samsung Galaxy S3 mini so the package name is com.sec.android.gallery3d
We can use monkey to open any app through adb shell,
Try the below command,
$ adb shell monkey -p com.android.gallery3d 1
In my nexus4, Gallery app package name is com.android.gallery3d and we are just passing 1 event via monkey, So that monkey will just open the app and will not do anything further.
Also this approach helps you to open any app just with the package name. Monkey will pick the launcher activity by itself.
Hope it helps.
maybe
adb shell am start -t image/* -a android.intent.action.VIEW
also one more thing , this will open the default app selected for gallery in your device.

How can I launch the App Info screen for my app through ADB?

I want to launch the App Info screen for my app through adb. I tried to fire an intent using "adb shell am start" but nothing seems to work. I need something that works at least for API levels 18 and 19. Can anyone help?
Open App Info
adb shell am start -a android.settings.APPLICATION_DETAILS_SETTINGS package:com.your.packagename
For Example: if you want to open Chrome App Info
adb shell am start -a android.settings.APPLICATION_DETAILS_SETTINGS package:com.android.chrome
adb shell am start -n yourpackagename/.activityname

Android: launch app info dialog via adb shell am

I'm trying to write a script which will launch the "app info" system dialog via adb for an app I'm testing.
I have done some investigation and came up with this command, which will launch "app info" but fails with a force close (NullPointerException in logcat):
adb shell am start -a android.intent.action.VIEW -n com.android.settings/.applications.InstalledAppDetails -es com.android.settings.ApplicationPkgName com.my.app -es pkg com.my.app
Seems that the package name isn't being properly passed.
What is the correct way to pass the package name parameter to the am command in this case?
adb shell am start -a android.settings.APPLICATION_DETAILS_SETTINGS -d package:<package-name>
Also, check this: https://stackoverflow.com/a/4567928/4409113
adb shell am start -n com.package.name/com.package.name.ActivityName
http://developer.android.com/tools/help/shell.html#am
You can also issue an activity manager command directly from adb
without entering a remote shell.
For example:
adb shell am start -a android.intent.action.VIEW
Seems like, start -a is a good way.

How to start an application using Android ADB tools

How do I send an intent using Android's ADB tools?
adb shell
am start -n com.package.name/com.package.name.ActivityName
Or you can use this directly:
adb shell am start -n com.package.name/com.package.name.ActivityName
You can also specify actions to be filter by your intent-filters:
am start -a com.example.ACTION_NAME -n com.package.name/com.package.name.ActivityName
It's possible to run an application specifying the package name only using the monkey tool by follow this pattern:
adb shell monkey -p your.app.package.name -c android.intent.category.LAUNCHER 1
The command is used to run the app using the monkey tool which generates random input for the application. The last part of the command is an integer which specifies the number of generated random input for the app. In this case the number is 1, which in fact is used to launch the app (icon click).
Or, you could use this:
adb shell am start -n com.package.name/.ActivityName
Linux and Mac users can also create a script to run an APK file with something like the following:
Create a file named "adb-run.sh" with these three lines:
pkg=$(aapt dump badging $1|awk -F" " '/package/ {print $2}'|awk -F"'" '/name=/ {print $2}')
act=$(aapt dump badging $1|awk -F" " '/launchable-activity/ {print $2}'|awk -F"'" '/name=/ {print $2}')
adb shell am start -n $pkg/$act
Then "chmod +x adb-run.sh" to make it executable.
Now you can simply:
adb-run.sh myapp.apk
The benefit here is that you don't need to know the package name or launchable activity name. Similarly, you can create "adb-uninstall.sh myapp.apk"
Note: This requires that you have Android Asset Packaging Tool (aapt) in your path. You can find it under the new build tools folder in the SDK.
Step 1: First get all the package names of the apps installed in your device, by using:
adb shell pm list packages
Step 2: You will get all the package names. Copy the one you want to start using ADB.
Step 3: Add your desired package name in the below command.
adb shell monkey -p 'your package name' -v 500
For example,
adb shell monkey -p com.estrongs.android.pop -v 500
to start the Es explorer.
The shortest command yet is the following:
adb shell monkey -p your.app.package.name 1
This will launch the default activity for the package that is in the launcher.
Thanks to Androiderson for the tip.
Also, I want to mention one more thing.
When you start an application from adb shell am, it automatically adds FLAG_ACTIVITY_NEW_TASK flag which makes behavior change. See the code.
For example, if you launch a Play Store activity from adb shell am, pressing the 'Back' button (hardware back button) wouldn't take you back to your app. Instead, it would take you to the previous Play Store activity if there was some (if there was not a Play store task, then it would take you back to your app). FLAG_ACTIVITY_NEW_TASK documentation says:
if a task is already running for the activity you are now starting, then a new activity will not be started; instead, the current task will simply be brought to the front of the screen with the state it was last in
This caused me to spend a few hours to find out what went wrong.
So, keep in mind that adb shell am add FLAG_ACTIVITY_NEW_TASK flag.
We can as well start an application by knowing the application type and feeding it with data:
adb shell am start -d "file:///sdcard/sample.3gp" -t "video/3gp" -a android.intent.action.VIEW
This command displays available *video players to play a sample.3gp file.
You can find your app package name by the below command:
adb shell pm list packages
The above command returns a package list of all apps. Example:
org.linphone.debug
.
.
com.android.email
Now I want to start app linphone by using the below command and this worked for me:
adb shell am start org.linphone.debug
Open file ~/.bash_profile, and add these Bash functions to the end of the file
function androidinstall(){
adb install -r ./bin/$1.apk
}
function androidrun(){
ant clean debug
adb shell am start -n $1/$1.$2
}
Then open the Android project folder:
androidinstall app-debug && androidrun com.example.app MainActivity
monkey --pct-syskeys 0 for development boards
This argument is needed for development boards without keys/display:
adb shell monkey --pct-syskeys 0 -p com.cirosantilli.android_cheat.textviewbold 1
Without it, the app won't open, and you will get an error message like:
SYS_KEYS has no physical keys but with factor 2.0%
It was tested on HiKey960, Android O AOSP.
Learned from: this GitHub issue
Also asked at: How to use the monkey command with an Android system that doesn't have physical keys?
Use:
adb shell am start -n '<appPackageName>/.<appActitivityName>
Example:
adb shell am start -n 'com.android.settings/.wifi.WifiStatusTest'
You can use the APK-INFO application to know the list of app activities with respect to each app package.
adb shell am start -n com.app.package.name/com.java.package.name.ActivityName
Example
adb shell am start -n com.google.android.googlequicksearchbox/com.google.android.search.core.google.GoogleSearch
If the Java package is the same, then it can be shortened:
adb shell am start -n com.example.package/.subpackage.ActivityName
Use:
adb shell am start -n '<appPackageName>/<appActitivityName>'
To get <appPackageName> run :
adb shell pm list packages
To get <appActitivityName> lunch app and run
adb shell dumpsys window | grep -E 'mCurrentFocus'
Try this, for opening an Android photo app and with the specific image file to open as a parameter.
adb shell am start -n com.google.android.apps.photos/.home.HomeActivity -d file:///mnt/user/0/primary/Pictures/Screenshots/Screenshot.png
It will work on latest version of Android. No pop up will come to select an application to open as you are giving the specific app to which you want to open your image with.
When you try to open a Flutter app, you can use this command:
adb shell am start -n com.package.name/io.flutter.embedding.android.FlutterActivity
Replace com.package.name with your package name. You find your package in your app/build.gradle at applicationId.

Categories

Resources