首页 > 代码库 > Am命令
Am命令
Am.java中:
View Code (intent == baseIntent) { hasIntentInfo = true; } } else if (opt.equals("-t")) { type = nextArgRequired(); if (intent == baseIntent) { hasIntentInfo = true; } } else if (opt.equals("-c")) { intent.addCategory(nextArgRequired()); if (intent == baseIntent) { hasIntentInfo = true; } } else if (opt.equals("-e") || opt.equals("--es")) { String key = nextArgRequired(); String value = http://www.mamicode.com/nextArgRequired();"color: rgb(0, 0, 255);">else if (opt.equals("--esn")) { String key = nextArgRequired(); intent.putExtra(key, (String) null); } else if (opt.equals("--ei")) { String key = nextArgRequired(); String value = http://www.mamicode.com/nextArgRequired();"color: rgb(0, 0, 255);">else if (opt.equals("--eu")) { String key = nextArgRequired(); String value = http://www.mamicode.com/nextArgRequired();"color: rgb(0, 0, 255);">else if (opt.equals("--ecn")) { String key = nextArgRequired(); String value = http://www.mamicode.com/nextArgRequired();"color: rgb(0, 0, 255);">if (cn == null) throw new IllegalArgumentException("Bad component name: " + value); intent.putExtra(key, cn); } else if (opt.equals("--eia")) { String key = nextArgRequired(); String value = http://www.mamicode.com/nextArgRequired();","); int[] list = new int[strings.length]; for (int i = 0; i < strings.length; i++) { list[i] = Integer.valueOf(strings[i]); } intent.putExtra(key, list); } else if (opt.equals("--el")) { String key = nextArgRequired(); String value = http://www.mamicode.com/nextArgRequired();"color: rgb(0, 0, 255);">else if (opt.equals("--ela")) { String key = nextArgRequired(); String value = http://www.mamicode.com/nextArgRequired();","); long[] list = new long[strings.length]; for (int i = 0; i < strings.length; i++) { list[i] = Long.valueOf(strings[i]); } intent.putExtra(key, list); hasIntentInfo = true; } else if (opt.equals("--ef")) { String key = nextArgRequired(); String value = http://www.mamicode.com/nextArgRequired();"color: rgb(0, 0, 255);">true; } else if (opt.equals("--efa")) { String key = nextArgRequired(); String value = http://www.mamicode.com/nextArgRequired();","); float[] list = new float[strings.length]; for (int i = 0; i < strings.length; i++) { list[i] = Float.valueOf(strings[i]); } intent.putExtra(key, list); hasIntentInfo = true; } else if (opt.equals("--ez")) { String key = nextArgRequired(); String value = http://www.mamicode.com/nextArgRequired();"color: rgb(0, 0, 255);">else if (opt.equals("-n")) { String str = nextArgRequired(); ComponentName cn = ComponentName.unflattenFromString(str); if (cn == null) throw new IllegalArgumentException("Bad component name: " + str); intent.setComponent(cn); if (intent == baseIntent) { hasIntentInfo = true; } } else if (opt.equals("-f")) { String str = nextArgRequired(); intent.setFlags(Integer.decode(str).intValue()); } else if (opt.equals("--grant-read-uri-permission")) { intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); } else if (opt.equals("--grant-write-uri-permission")) { intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); } else if (opt.equals("--exclude-stopped-packages")) { intent.addFlags(Intent.FLAG_EXCLUDE_STOPPED_PACKAGES); } else if (opt.equals("--include-stopped-packages")) { intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); } else if (opt.equals("--debug-log-resolution")) { intent.addFlags(Intent.FLAG_DEBUG_LOG_RESOLUTION); } else if (opt.equals("--activity-brought-to-front")) { intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); } else if (opt.equals("--activity-clear-top")) { intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); } else if (opt.equals("--activity-clear-when-task-reset")) { intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); } else if (opt.equals("--activity-exclude-from-recents")) { intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); } else if (opt.equals("--activity-launched-from-history")) { intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY); } else if (opt.equals("--activity-multiple-task")) { intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK); } else if (opt.equals("--activity-no-animation")) { intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); } else if (opt.equals("--activity-no-history")) { intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); } else if (opt.equals("--activity-no-user-action")) { intent.addFlags(Intent.FLAG_ACTIVITY_NO_USER_ACTION); } else if (opt.equals("--activity-previous-is-top")) { intent.addFlags(Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP); } else if (opt.equals("--activity-reorder-to-front")) { intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); } else if (opt.equals("--activity-reset-task-if-needed")) { intent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); } else if (opt.equals("--activity-single-top")) { intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); } else if (opt.equals("--activity-clear-task")) { intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); } else if (opt.equals("--activity-task-on-home")) { intent.addFlags(Intent.FLAG_ACTIVITY_TASK_ON_HOME); } else if (opt.equals("--receiver-registered-only")) { intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY); } else if (opt.equals("--receiver-replace-pending")) { intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING); } else if (opt.equals("--selector")) { intent.setDataAndType(data, type); intent = new Intent(); } else if (opt.equals("-D")) { mStartFlags |= ActivityManager.START_FLAG_DEBUG; } else if (opt.equals("-W")) { mWaitOption = true; } else if (opt.equals("-P")) { mProfileFile = nextArgRequired(); mStartFlags |= ActivityManager.START_FLAG_AUTO_STOP_PROFILER; } else if (opt.equals("--start-profiler")) { mProfileFile = nextArgRequired(); mStartFlags &= ~ActivityManager.START_FLAG_AUTO_STOP_PROFILER; } else if (opt.equals("-R")) { mRepeat = Integer.parseInt(nextArgRequired()); } else if (opt.equals("-S")) { mStopOption = true; } else if (opt.equals("--opengl-trace")) { mStartFlags |= ActivityManager.START_FLAG_OPENGL_TRACES; } else if (opt.equals("--user")) { mUserId = parseUserArg(nextArgRequired()); } else if (opt.equals("--receiver-permission")) { mReceiverPermission = nextArgRequired(); } else { System.err.println("Error: Unknown option: " + opt); return null; } } intent.setDataAndType(data, type); final boolean hasSelector = intent != baseIntent; if (hasSelector) { // A selector was specified; fix up. baseIntent.setSelector(intent); intent = baseIntent; } String arg = nextArg(); baseIntent = null; if (arg == null) { if (hasSelector) { // If a selector has been specified, and no arguments // have been supplied for the main Intent, then we can // assume it is ACTION_MAIN CATEGORY_LAUNCHER; we don‘t // need to have a component name specified yet, the // selector will take care of that. baseIntent = new Intent(Intent.ACTION_MAIN); baseIntent.addCategory(Intent.CATEGORY_LAUNCHER); } } else if (arg.indexOf(‘:‘) >= 0) { // The argument is a URI. Fully parse it, and use that result // to fill in any data not specified so far. baseIntent = Intent.parseUri(arg, Intent.URI_INTENT_SCHEME); } else if (arg.indexOf(‘/‘) >= 0) { // The argument is a component name. Build an Intent to launch // it. baseIntent = new Intent(Intent.ACTION_MAIN); baseIntent.addCategory(Intent.CATEGORY_LAUNCHER); baseIntent.setComponent(ComponentName.unflattenFromString(arg)); } else { // Assume the argument is a package name. baseIntent = new Intent(Intent.ACTION_MAIN); baseIntent.addCategory(Intent.CATEGORY_LAUNCHER); baseIntent.setPackage(arg); } if (baseIntent != null) { Bundle extras = intent.getExtras(); intent.replaceExtras((Bundle)null); Bundle uriExtras = baseIntent.getExtras(); baseIntent.replaceExtras((Bundle)null); if (intent.getAction() != null && baseIntent.getCategories() != null) { HashSet<String> cats = new HashSet<String>(baseIntent.getCategories()); for (String c : cats) { baseIntent.removeCategory(c); } } intent.fillIn(baseIntent, Intent.FILL_IN_COMPONENT | Intent.FILL_IN_SELECTOR); if (extras == null) { extras = uriExtras; } else if (uriExtras != null) { uriExtras.putAll(extras); extras = uriExtras; } intent.replaceExtras(extras); hasIntentInfo = true; } if (!hasIntentInfo) throw new IllegalArgumentException("No intent supplied"); return intent; } private void runStart() throws Exception { Intent intent = makeIntent(UserHandle.USER_CURRENT); if (mUserId == UserHandle.USER_ALL) { System.err.println("Error: Can‘t start service with user ‘all‘"); return; } String mimeType = intent.getType(); if (mimeType == null && intent.getData() != null && "content".equals(intent.getData().getScheme())) { mimeType = mAm.getProviderMimeType(intent.getData(), mUserId); } do { if (mStopOption) { String packageName; if (intent.getComponent() != null) { packageName = intent.getComponent().getPackageName(); } else { IPackageManager pm = IPackageManager.Stub.asInterface( ServiceManager.getService("package")); if (pm == null) { System.err.println("Error: Package manager not running; aborting"); return; } List<ResolveInfo> activities = pm.queryIntentActivities(intent, mimeType, 0, mUserId); if (activities == null || activities.size() <= 0) { System.err.println("Error: Intent does not match any activities: " + intent); return; } else if (activities.size() > 1) { System.err.println("Error: Intent matches multiple activities; can‘t stop: " + intent); return; } packageName = activities.get(0).activityInfo.packageName; } System.out.println("Stopping: " + packageName); mAm.forceStopPackage(packageName, mUserId); Thread.sleep(250); } System.out.println("Starting: " + intent); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); ParcelFileDescriptor fd = null; if (mProfileFile != null) { try { fd = ParcelFileDescriptor.open( new File(mProfileFile), ParcelFileDescriptor.MODE_CREATE | ParcelFileDescriptor.MODE_TRUNCATE | ParcelFileDescriptor.MODE_READ_WRITE); } catch (FileNotFoundException e) { System.err.println("Error: Unable to open file: " + mProfileFile); return; } } IActivityManager.WaitResult result = null; int res; if (mWaitOption) { result = mAm.startActivityAndWait(null, null, intent, mimeType, null, null, 0, mStartFlags, mProfileFile, fd, null, mUserId); res = result.result; } else { res = mAm.startActivityAsUser(null, null, intent, mimeType, null, null, 0, mStartFlags, mProfileFile, fd, null, mUserId); } PrintStream out = mWaitOption ? System.out : System.err; boolean launched = false; switch (res) { case ActivityManager.START_SUCCESS: launched = true; break; case ActivityManager.START_SWITCHES_CANCELED: launched = true; out.println( "Warning: Activity not started because the " + " current activity is being kept for the user."); break; case ActivityManager.START_DELIVERED_TO_TOP: launched = true; out.println( "Warning: Activity not started, intent has " + "been delivered to currently running " + "top-most instance."); break; case ActivityManager.START_RETURN_INTENT_TO_CALLER: launched = true; out.println( "Warning: Activity not started because intent " + "should be handled by the caller"); break; case ActivityManager.START_TASK_TO_FRONT: launched = true; out.println( "Warning: Activity not started, its current " + "task has been brought to the front"); break; case ActivityManager.START_INTENT_NOT_RESOLVED: out.println( "Error: Activity not started, unable to " + "resolve " + intent.toString()); break; case ActivityManager.START_CLASS_NOT_FOUND: out.println(NO_CLASS_ERROR_CODE); out.println("Error: Activity class " + intent.getComponent().toShortString() + " does not exist."); break; case ActivityManager.START_FORWARD_AND_REQUEST_CONFLICT: out.println( "Error: Activity not started, you requested to " + "both forward and receive its result"); break; case ActivityManager.START_PERMISSION_DENIED: out.println( "Error: Activity not started, you do not " + "have permission to access it."); break; default: out.println( "Error: Activity not started, unknown error code " + res); break; } if (mWaitOption && launched) { if (result == null) { result = new IActivityManager.WaitResult(); result.who = intent.getComponent(); } System.out.println("Status: " + (result.timeout ? "timeout" : "ok")); if (result.who != null) { System.out.println("Activity: " + result.who.flattenToShortString()); } if (result.thisTime >= 0) { System.out.println("ThisTime: " + result.thisTime); } if (result.totalTime >= 0) { System.out.println("TotalTime: " + result.totalTime); } System.out.println("Complete"); } mRepeat--; if (mRepeat > 1) { mAm.unhandledBack(); } } while (mRepeat > 1); }
UserHandle.java
View Code
ComponentName.java
View Code
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。