Android Intent调用 Uri的方法总结 //调用浏览器 Uri uri = Uri.parse(""); Intent it = new Intent(Intent.ACTION_VIEW..., uri); startActivity(it); Uri uri = Uri.parse("tel.10086"); Intent it =new Intent(Intent.ACTION_CALL...= new Intent(Intent.ACTION_SENDTO, uri); startActivity(it); Intent it = new Intent(Intent.ACTION_SEND..., "1"); Intent it = new Intent(Intent.ACTION_VIEW, uri); startActivity(it); //卸载APK Uri uri =...id=app_id"); Intent it = new Intent(Intent.ACTION_VIEW, uri); startActivity(it); //调用搜索 Intent
前言 当我们用Intent传输大数据时,有可能会出现错误: val intent = Intent(this@MainActivity, Main2Activity::class.java) val data...TransactionTooLargeException错误: ?...startActivity流程探究 首先我们知道Context和Activity都含有startActivity,但两者最终都调用了Activity中的startActivity: @Override...startActivityForResult(intent, -1); } } 而startActivity最终会调用自身的startActivityForResult,省略了嵌套...比如打开一个新的Activity,则需要调用系统进程AMS中的方法进行实现,AMS等实现完毕需要回调app进程中的相关方法进行具体activity生命周期的回调。
预期结果:系统使用安全接口调用webview 整改建议 建议禁用危险接口addJavascriptInterface导出Java类及方法,并加强访问的url的域控制; 严格控制导出方法的权限,避免越权操作...WebView组件忽略SSL证书验证错误漏洞 安全风险 Android WebView组件加载网页发生证书认证错误时,会调用WebViewClient类的onReceivedSslError方法,如果该方法实现调用了...预期结果:正确的处理SSL错误,避免证书错误的风险。 整改建议:当发生证书认证错误时,采用默认的处理方法handler.cancel(),停止加载问题页面。..."); startActivity(i); 如果FLAG_ACTIVITY_NEW_TASK标签就存在该风险,记录漏洞,停止测试 预期结果:不包含FLAG_ACTIVITY_NEW_TASK标志的Intent...("user_id", user_id); startActivity(intent); ) 预期结果:在使用Intent获取数据时对异常做了充分的处理。
方法 public abstract void startActivity(Intent intent); ContextWrapper继承覆盖了这个方法 @Override public void...实际指向的是ContextImpl这个类,我们再来看这个类中的startActivity方法 @Override public void startActivity(Intent intent,...类型为ReceiverRestrictedContext,和Service一样,都没有重写startActivity),如果不加FLAG_ACTIVITY_NEW_TASK的话会报如下错误的原因 "Calling...那到这里可能就有疑问了,为什么在Activity中不加FLAG_ACTIVITY_NEW_TASK调用startActivity时不会报错呢。...原因是因为Activity重写了ContextWrapper中的startActivity方法 @Override public void startActivity(Intent intent
我现在需要在点击listview的某个item的时候启动一个activity,因为我的listview不在activity中,所以为了简便我直接用context来调用activity,如下: Intent...view.getContext().startActivity(intent); 运行时却曝出如下错误: Caused by: android.util.AndroidRuntimeException:...原因:Context中有一个startActivity方法,Activity继承自Context,重载了startActivity方法。...如果使用Activity的startActivity方法,不会有任何限制,而如果使用Context的startActivity方法的话,就需要开启一个新的task,遇到上面那个异常的,都是因为使用了Context...的startActivity方法。
= intent.resolveActivity(pm)) { context.startActivity(intent); }...错误提示信息: Caused by: Android.util.AndroidRuntimeException: Calling startActivity() from outside of an...原因分析 activity继承了context重载了startActivity方法,如果使用acitvity中的startActivity,不会有任何限制。...而如果直接使用context的startActivity则会报上面的错误,根据错误提示信息,可以得知,如果要使用这种方式需要打开新的TASK。...解决方法: 加上Flags intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); Intent
随后系统会尝试重新创建Service,由于服务状态为开始状态,所以创建服务后一定会调用onStartCommand(Intent,int,int)方法。...Activity的启动过程 app启动的过程有两种情况,第一种是从桌面launcher上点击相应的应用图标,第二种是在activity中通过调用startActivity来启动一个新的activity。...@Override public void startActivity(Intent intent) { startActivityForResult(intent, -1);...public int startActivity(IApplicationThread caller, Intent intent, String resolvedType, Uri...触发的方式是调用 super.dispatchTouchEvent函数,即调用父View的dispatchTouchEvent方法。
(new Intent()); 方法启动 Activity , 调用方法原型如下 : public class Activity extends ContextThemeWrapper.../app/Activity.java 地址 ; 在 public void startActivity(Intent intent) 方法中 , 执行 this.startActivity(intent...* 当此活动退出时,您的 * 将使用给定的请求代码调用onActivityResult()方法。...执行应用程序发出的startActivity调用。...为此,重写此方法以捕获对start的调用 * 活动,以便返回包含结果的新ActivityResult * 您希望应用程序能够看到,并且不要调用超级用户 * 班级。
开始之前我们需要知道的一点就是,其实在 Android 里面启动一个 Activity 可以通过两种方式实现,一种是我们常用的调用 Activity.startActivity 方法,一种是调用 Context.startActivity...startActivity 调用的真正起作用的方法,然后想办法把目标方法拦截掉,并输出我们的一条 Log 信息。 ...(intent, null); 3 } 接着看 this.startActivity(intent, null) 方法源码: 1 public void startActivity(Intent intent...到此为止我们已经 hook 了 Activity 的 startActivity 方法,非常简单,代码量也很少,但我们也很轻易的发现这种方法需要在每一个 Activity 的 onCreate 方法里面调用一次...而且 doContextStartHook() 方法只在程序开始的时候调用一次即可,后面在程序其他的 Activity 中调用 Context.startActivity() 时此拦截工作均可生效,这是因为
Hook Activity的startActivity 寻找Hook点: Activity的startActivity方法的调用链: // android/app/Activity.java // Step1...当调用Activity的startActivity方法时,最后会调用 mInstrumentation的execStartActivity方法来完成Activity的开启,而 mInstrumentation...实现execStartActivity方法,并在内部通过反射调用Instrumentation的execStartActivity方法 */ public class InstrumentationProxy...寻找Hook点: ContextImpl中startActivity的调用链: // Step1 @Override public void startActivity(Intent intent) {..., -1, options); } Hook点分析: 调用ActivityThread的getInstrumentation方法获取Instrumentation。
Intent传递给调用的组件,并完成组件的调用。...1)构造方法传入Component,最常用的方式: Intent intent = new Intent(this, SecondActivity.class); startActivity(intent...1)setAction方法 Intent intent = new Intent(); intent.setAction("mark"); startActivity(intent); 2)构造方法直接设置...Extra:扩展信息 Intent可以携带的额外 key-value 数据,你可以通过调用putExtra()方法设置数据,每一个 key对应一个 value数据。...你也可以通过创建 Bundle对象来存储所有数据,然后通过调用putExtras()方法来设置数据。
要更改Activity启动模式,使用setFlags()或addFlags()设置Intent标志,并将该Intent用作startActivity()或startActivityForResult()...startActivityForResult(intent, REQUEST_CODE); 另外,即使通过明确设置FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS标志创建了新任务,您也可能认为有一种方法可以防止读取...但是,即使使用此方法,内容也可以由第三方读取,因此您应该避免使用FLAG_ACTIVITY_NEW_TASK。...如果意图被错误地发送到恶意软件,则可能发生信息泄漏。 另一方面,当通过显式意图使用Activity时,只有预期的Activity会收到Intent,所以这样更安全。...Intent intent = new Intent(this, PictureActivity.class); intent.putExtra("BARCODE", barcode); startActivity
弹出升级对话框 获取AlertDialog.Builder对象,通过new出来 调用Builder对象的setTitle()方法,参数:文本 调用Builder对象的setMessage()方法,参数:...方法里面下载APK,替换安装 调用Builder对象的setNegativeButton()方法,参数和上面一样,点击后 关闭对话框调用AlertDialog对象的dismiss()方法, 跳转到主页...计算拼接好setText()显示出来 下载成功 onSuccess() 安装apk,发送隐式意图,获取Intent对象,通过new 调用Intent对象的setAction()方法,设置动作,参数:android.intent.action.VIEW...调用Intent对象的addCategory()添加类型,参数:android.intent.category.DEFAULT 调用Intent对象的setDataAndType(),设置数据和类型,...intent = new Intent(SplashActivity.this, HomeActivity.class); startActivity(intent);
现在来看装饰类ContextWrapper如何来调用这个startActivity方法的: /** * Proxying implementation...} 首先必须包含属性Context抽象类的实例对象mBase, 看出它只是单纯的调用父类Context的方法mBase.startActivity(intent),并未做修改 看看具体装饰类如何来装饰和扩展父类...(Intent intent)方法,虽然在Service中没有该方法,但调用的其实是父类ContextWrapper中的startActivity(Intent intent),该方法如下:...mBase.startActivity(intent); } 只是简单地调用了下mBase.startActivity(intent),所以调用的还是...Context的具体实现类ContextImpl的startActivity(Intent intent),方法内容如下: @Override
Launcher 中的启动方法 : Launcher 应用中启动 Android 应用 , 调用 startActivity(View v, Intent intent, Object tag) 方法...实际启动方法 : 在 startActivity(View v, Intent intent, Object tag) 方法中启动 Android 应用的核心方法是 startActivity(intent..., opts.toBundle()) 和 startActivity(intent) 启动安卓应用界面 ; ( 该 startActivity(intent) 方法就是我们经常调用的启动界面的方法 )...Launcher 应用中 startActivity(View v, Intent intent, Object tag) 方法源码 : boolean startActivity(View v...应用启动前置操作 : 调用 startActivity(Intent intent) 方法 , 通过进程间通信 , 启动另外的 Android 应用 , 首先会去查找该 Activity 对应的包名 ,
Activity生命周期交互设计思想 * 例子:当处在音乐播放页面时,此时来电,音乐activity调用onPause (),重写该方法暂停音乐,否则会影响通话; * 另一方面,音乐activity...(url);startActivity(intent); * 启动相册——intent.setAction(Intent.ACTION_GET_CONTENT);intent.setType(“image.../*”);startActivity(intent); * 发送短信——intent.setAction(Intent.ACTION_SEND);intent.setType(“text/plain”...;startActivity(intent); * 打开电话——intent.setAction(Intent.ACTION_VIEW );Uri url=Uri.parse("tel:123456"...); intent.setData(url); startActivity(intent); * 其它页面可以通过Android文档查看Intent
为了获取根View或其他任何View视图的bitmap,可以通过调用getDrawingCache( )方法,它将返回一个缓存bitmap,但前提是这个View允许绘图缓存,这就是为什么在获取缓存bitmap...但是问题来了,受限于IPC的容量限制,子bitmap太大了以至于不能在Intent中传递,这是我得到的错误log: !!! FAILED BINDER TRANSACTION !!!...The Intent needed tot start the new Activity */ public static void startActivity(Activity currActivity...: ActivitySplitAnimationUtil.startActivity(Activity1.this, new Intent(Activity1.this, Activity2.class...没有什么多余的操作,只需要调用三个静态方法即可。 目前只支持API 14以上,如果想兼容更早的版本请使用NineOldAndroid。
hook Activivity 的第一种方法 我们先来看一下 Activity startActivity 方法的调用流程。...因此,即我们通过 Activity startActivity 的方法启动 activity,最终都会调用到 mInstrumentation.execStartActivity 方法。..."); // 开始调用原始的方法, 调不调用随你,但是不调用的话, 所有的startActivity都失效了. // 由于这个方法是隐藏的,因此需要使用反射调用;首先找到这个方法...hook activity 的第二种方法 我们先来看一下 getApplicationContext startActivity 的调用关系 ?...+ "]"); // 开始调用原始的方法, 调不调用随你,但是不调用的话, 所有的startActivity都失效了. // 由于这个方法是隐藏的,因此需要使用反射调用
在注释2处会调用startActivity方法,这个startActivity方法的实现在Activity中,如下所示。...(intent, -1); } } startActivity方法中会调用startActivityForResult方法,它的第二个参数为-1,表示Launcher不需要知道Activity...ActivityManager的getService方法来获取AMS的代理对象,接着调用它的startActivity方法。...回到Instrumentation类的execStartActivity方法中,从上面得知execStartActivity方法最终调用的是AMS的startActivity方法。...紧接着又调用了startActivity方法,如下所示。
() 方法 ---- 我们接着看 onBackPressed() 方法 我们可以看到,在 onBackPressed() 方法中,又调用了 finishAfterTransition() 方法 很明显该方法的作用就是结束丹铅活动...onKeyDown() , 然后该方法会判断是那个键被按下, 如果是 Home 键的话,就调用 onBackPressed() 方法, 接着 onBackPressed() 方法又调用了 finishAfterTransition...intent.addCategory(Intent.CATEGORY_HOME); startActivity(intent); }...); intent.addCategory(Intent.CATEGORY_HOME); startActivity(intent); }...这就是我自己的理解,如果有错误的话欢迎大家在评论区指出~
领取专属 10元无门槛券
手把手带您无忧上云