您也许会问,为什么 typeof 运算符对于 null 值会返回 "Object"。这实际上是 JavaScript 最初实现中的一个错误,然后被 ECMAScript 沿用了。...对变量或值调用 typeof 运算符将返回下列值之一: undefined - 如果变量是 Undefined 类型的 boolean - 如果变量是 Boolean 类型的 number - 如果变量是...Number 类型的 string - 如果变量是 String 类型的 object - 如果变量是一种引用类型或 Null 类型的 这里需要注意的是:alert(typeof null); //...null被认为是对象的占位符,但仍然算做原始数据类型 另一种只有一个值的类型是 Null,它只有一个专用值 null,即它的字面量。...如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是 null。 2.Null类型 Null类型(空型)只有一个值就是:null。
隐式意图和显式意图: 显式意图:显式意图明确指明了启动活动的上下文和想要启动的目标活动,显式意图明确指定了Intent应该传递给哪个组件。 隐式意图:没有明确指定组件名的Intent为隐式意图。...= null) { startActivity(intent); } } } 批注: 按钮1,2为了演示隐式意图,按钮3演示显式意图 if (intent.resolveActivity..., setType会将URI置为null。...参数 intent Intent:开始的意图。 requestCode int:如果>=0,则当活动退出时,此代码将在onActivityResult()中返回。...如果活动显式返回,则不会返回任何结果,或者在操作期间崩溃,resultCode将为RESULT_CANCELED。 当您的活动重新启动时,您将在onResume()之前立即收到此调用。
主要采用intent意图匹配间接实现检测支付宝客户端是否安装,代码如下: public static boolean checkAliPayInstalled(Context context...Intent intent = new Intent(Intent.ACTION_VIEW, uri); ComponentName componentName = intent.resolveActivity...= null; } 目前测试有效
/可选 ComponentName cn = new ComponentName(package_name,activity_path); intent.setComponent(cn); if (intent.resolveActivity...= null) { startActivity(intent); } else { //找不到指定的 Activity } 遗憾的是,Intent.resolveActivity() 方法并不能判定此方式所要启动的...相对的,resolveActivityInfo() 则可以进行有效判定并返回 null。.../www.abc.xyz"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); 这时,直接使用 Intent.resolveActivity...PackageManager.MATCH_DEFAULT_ONLY); return list.size() > 0; } 那么,总结下来就是: 方式一 PackageManager.getLaunchIntentForPackage(),直接判断返回的
对于广播 Intent,这是指已发生且正在报告的操作。操作在很大程度上决定了其余 Intent 的构成,特别是数据和 extra 中包含的内容。 可以指定自己的操作,供 Intent 在应用内使用。...ACTION_SEND 这也称为“共享”Intent。...这个应用中声明有相同信息的组件将对这个意图做出响应。...intent.setAction("android.intent.action.ACTION_START"); if(null...=intent.resolveActivity(getPackageManager())) startActivity(intent);
* * @param intent 启动的意图...AutofillManager.EXTRA_RESTORE_CROSS_ACTIVITY)) { if (TextUtils.equals(getPackageName(), intent.resolveActivity...* * @param intent 要启动的意图. * @param requestCode 如果>=0,则当活动退出时,此代码将在onActivityResult()中返回....* @param target 哪个活动正在执行启动(并因此接收任何结果);如果未进行此调用,则可能为null从一项活动中。 * @param intent 启动的实际意图。...* @return 要强制返回特定结果,请返回包含所需数据的ActivityResult对象; * 否则返回null。默认实现总是返回null。
意图是安卓中重要核心组件之一。 Intent 是一个消息传递对象,您可以使用它从其他应用组件请求操作。...例如,当应用使用ACTION_SEND 操作执行“共享”时,用户根据目前的状况可能需要使用另一不同的应用,因此应当始终使用选择器对话框,如图 2 中所示。...= null) { startActivity(chooser); } 使用待定 Intent PendingIntent 对象是 Intent 对象的包装器。...PackageManager 提供了一整套 query...() 方法来返回所有能够接受特定 Intent 的组件。...对于广播接收器,有一种类似的方法: [queryBroadcastReceivers()](http://developer.android.youdaxue.com/reference/android
前言: 上一篇博客给大家聊了Intent的定义,分类、属性和功能,相信大家对于Intent在Android中的作用已经清楚,这一篇博客将会给大家聊Intent的用法。..."Ninja class"); calendarIntent.putExtra(Events.EVENT_LOCATION, "Secret dojo"); 注意:你的Intent尽可能的详细说明你的意图...你可以调用queryIntentActivities()方法来验证Intent是否会有Activity响应,queryIntentActivities()返回一个能够响应该Intent的Activity...Intent.createChooser(intent, title); // Verify the intent will resolve to at least one activity if (intent.resolveActivity...= null) { startActivity(chooser); } 上面的例子会弹出一个包含很多应用的Dialog,这些应用都是能够响应这个Intent的应用。----
例如,如需在地图上向用户显示位置,则可以使用隐式 Intent,请求另一具有此功能的应用共享内容 例如,如果希望与其他人共享的内容,可以使用 ACTION_SEND 操作创建 Intent,并添加指定要共享的内容...通常有两种攻击操作: 通常导致读入任意文件 自定义操作,取决于应用程序实现产生的不同漏洞 自定义操作 受害者应用代码:功能需要接受返回数据并在webview中打开,接收返回码为1 startActivityForResult...就其本身而言,启动隐藏组件不会产生太大的安全影响,并且需要滥用隐藏组件的功能: 旁路保护 开发人员可以实现对收到的意图的过滤和显式设置组件以处理意图 为null: intent.setComponent...(null);//null 让系统为您找到一个 在这种情况下,可以通过指定未导出的组件来绕过应用的显式意图保护选择器: Intent intent = new Intent(); intent.setSelector...但是,开发人员可以将选择器显式设置为 null: intent.setComponent(null); intent.setSelector(null); 即便如此,您也可以创建一个隐式意图来匹配 某些未导出活动的
与动作一样,如果某个类型包含在意图中(在某数据中显式或隐式地包含),则该组将必须按组件列出。 对于不是content: URI的数据, Intent中不包含显式类型,而是考虑意图数据(如or)的方案。...该活动允许用户查看或编辑数据目录(通过VIEW和EDIT操作),或选择一个特定的注释并将其返回给调用者(通过PICK操作)。...ACTION_ATTACH_DATA, ACTION_EDIT, ACTION_PICK, ACTION_CHOOSER, ACTION_GET_CONTENT, ACTION_DIAL ACTION_CALL ACTION_SEND...串 EXTRA_STREAM 内容:URI保存与Intent关联的数据流,用于提供ACTION_SEND正在发送的数据。...后续 可能存在出现错误的地方,欢迎指正,如果对于文章中的某些部分有不同的理解和想法,或者有更好的想法,欢迎留言讨论。这里所介绍的相关知识,只是作者对于数据库中的浅层次理解。
intent.setAction(Intent.ACTION_DIAL); // 是否可以处理跳转到拨号的 Intent boolean canResolveIntent = intent.resolveActivity...return true; } else { return false; } } 蓝牙 /* *判断蓝牙是否有效来判断是否为模拟器 *返回...return false; } } } 设备参数 /* *根据部分特征参数设备信息来判断是否为模拟器 *返回...|| "google_sdk".equals(Build.PRODUCT); } CPU /* *根据CPU是否为电脑来判断是否为模拟器 *返回...return true; } return false; } /* *根据CPU是否为电脑来判断是否为模拟器(子方法) *返回
隐式启动:除了显式地指定目标组件的类名,还可以使用隐式意图根据指定的Action、Data和Category来自动选择最合适的组件。...以下是Intent的常见属性和方法: 1.Action(动作):指示Intent要执行的操作,常见的Action有ACTION_VIEW、ACTION_SEND等。...intent.setComponent(new ComponentName(context, TargetActivity.class)); 7.创建意图: Intent intent = new Intent...11.获取Intent中的数据: String value = intent.getStringExtra("key"); 除了上述常见的属性和方法,Intent还有一些其他用法和扩展功能,如启动带返回结果的活动
对于第二种情况,我参照了很多app的做法,现总结为以下两种: 点击通知栏消息打开activity按下返回键后判断app是否启动,如果没有启动就要启动app; 点击通知栏消息时判断app是否正在前台运行,...1代表当前应用在前台运行,返回2代表当前应用在后台运行,返回0代表应用未启动(没有一个存活的activity)。...> cls) { Intent intent = new Intent(context, cls); ComponentName cmpName = intent.resolveActivity...> cls) { Intent intent = new Intent(context, cls); ComponentName cmpName = intent.resolveActivity...此时如果依次按返回键,D D C B A将会依次弹出栈而显示在界面上。
* import kotlin.concurrent.thread class CameraUtil { val TAG: String = "CameraUtil" //拍照(返回原始图...= null //拍照后保存的照片 var imgUri: Uri?...= null //拍照后保存的照片的uri val AUTHORITY = "com.hjl.artisan.fileProvider" //FileProvider的签名...intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString()) //设置图片保存的格式 intent.resolveActivity...compressImageComplete(imgBitmap: Bitmap, file: File) } /** * 压缩图片(质量压缩) * 压缩BitMap至指定大小以内,并且返回
Intent的中文意思是“意图,目的”的意思,可以理解为不同组件之间通信的“媒介”或者“信使”。...android.intent.action.GET_CONTENT 显示打电话面板 ACITON_CALL android.intent.action.DIAL 直接打电话 ACTION_SEND...EXTRA_SHORTCUT_ICON_RESOURCE EXTRA_SHORTCUT_INTENT EXTRA_SHORTCUT_NAME EXTRA_SUBJECT 描述信息主题的键 EXTRA_TEXT 使用ACTION_SEND...is sms demo"; Intent mmsintent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("smsto", number, null...打开照相机 Intent i = new Intent(Intent.ACTION_CAMERA_BUTTON, null); this.sendBroadcast(i); <
intent.setComponent(new ComponentName("com.android.browser", "com.android.browser.BrowserActivity")); if (intent.resolveActivity...(context.getPackageManager()) == null) { return; } try { context.startActivity...可以移除不需要的代码、重命名类、域与方法等,做法就是在buildTypes的指定类型下增加下面的代码: buildTypes { release { //对于...getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt' } debug { //对于...对于一些短时的后台任务,我们可以考虑采用IntentService,它的onHandleIntent回调是在异步线程中执行的,并且任务执行完毕后,该Service会自动销毁,不需要手动管理。
Intent,中文名为意图,简单说也就是传递消息。Intent是各个组件之间信息沟通的桥梁。...android.intent.action.EDIT 显示可编辑的数据 ACTION_CALL android.intent.actionCALL 拨号 ACTION_DIAL android.intent.action.DIAL 打电话 ACTION_SEND...bundle.getInt("age",0); double height = bundle.getDouble("height",0.0f); 向上一个Activity返回参数... Intent有时只需要把请求数据发送到下一个页面就行,但有时还要处理下一个页面的应答数据(通常发生在下一个页面返回到上一个页面时)。...后一个页面在返回前一个页面时,打包应答数据并调用setResult方法返回信息。
Intent意图可以是明确的指定组件的名称,这样你可以精确的启动某个系统组件,比如启动一个Activity。...Action: 意图,一个字符串变量,用来指定Intent要执行的动作类别(比如:view or pick)。...ACTION_SEND: 也被称为"share"(共享)意图,在调用startActivity()方法启动Activity时,用此action来分享一些用户想要分享的数据给其他应用程序,比如邮件app或者社交...对于数据key的名字要尽量用包名做前缀,然后再加上其他,这样来保证key的唯一性。...= null) { startActivity(sendIntent); } 注意:也许你的设备中没有能够执行你的隐式Intent的应用,这个时候startActivity将会失败并且你的app
ACTION_SEND: (android.intent.action.SEND) 向其他人发送数据(例如:彩信/email)。...ACTION_GET_CONTENT: (android.intent.action.GET_CONTENT) 让用户选择数据,并返回所选数据。...: //选择图片 requestCode 返回的标识 Intent intent = new Intent(); intent.setAction(Intent....Activity请参考上面FLAG_ACTIVITY_NEW_TASK的详细说明,"launchMode"设置为"standard"的Activity可以被实例化多次, 可以在Task中的任何位置, 对于一个新的...Activity请参考上面FLAG_ACTIVITY_NEW_TASK的详细说明,"launchMode"设置为"singleTop"的Activity可以被实例化多次, 可以在Task中的任何位置, 对于一个新的
在活动中使用toast 通过findViewByid ()方法获取到在布局文件中定义的元素,返回一个View 对象,需要向下转型将它转成Button 对象。 ...使用显示Intent 首先构建出了一个Intent ,传人FirstActivity.this 作为上下文,传入SecondActivity.class 作为目标活动,这样我们的“意图”就非常明显了...ACTION_SEND ); String[] tos = { “test1@gmail.com" }; String[] ccs = { “test2@gmail.com" };...ACTION_SEND ); returnIt.putExtra( "sms_body" , “test" ); returnIt.putExtra(Intent ....此时的活动一定位于返回栈的栈顶,并且处于运行状态。 onPause()。这个方法在系统准备去启动或者恢复另一个活动的时候调用。
领取专属 10元无门槛券
手把手带您无忧上云