隐式 Intent 隐式Intent: 恰恰相反,它不会用组件名称定义需要激活的目标组件,它更广泛地用于在不同应用程序之间传递消息。 Android 系统会根据隐式意图中设置的动作 (action) 、类别 (category) 、数据( URI 和数据类型)找到最合适的组件来处理这个意图。 如: Uri uri = Uri. parse ("smsto:0411 8835533 "); Intent it = new Intent(Intent. ACTION_SENDTO , uri); // 通过 action 和 URI 找到最适合的组件 String message = " 来正前方学习,每次都有新感觉! from www.PKbest.CN"; it.putExtra("sms_body", message); startActivity (it); <activity android:name=". PKbestActivity " android:label="@string/main_activity"> <intent-filter> <action android:name="cn.pkbest.mobile. PKbestActivity "/> <category android:name="android.intent.category. DEFAULT " /> </intent-filter> </activity> Android 需要解析的是那些间接 Intent ,通过解析,将 Intent 映射给可以处理此 Intent 的 Activity 、 IntentReceiver 或 Service 在 intent 过滤器中还可以添加多个 action 和 category ,还可以添加 data 。 应用场景 : 应用外部只能使用 隐式意图 ,功能封装。
31.
屏幕切换 Android 其实跟网页开发差不多,屏幕切换就好像一个页面跳转到另一个页面。1. 屏幕切换( A B ):需要调用 startActivity() 来完成 Intent intent = new Intent(); intent.setClass(A. this , B. class ); startActivity (intent); A. this .finish();// 关闭 A 的 Activity 2. 携带数据切换:需要调用 startSubActivity() 实现跳转 (A B) , setData(ContentURI) :将封装的数据 带过去 (A B) 。 setResult() :将参数 带回来 (A B A ), 即传递 B 后, A 可以得到 B 返回的数据, 同时触发 A 的 onActivityResult() 。 A.Java Intent intent = new Intent(); intent.setClass(A.this, B.class); Bundle b = new Bundle(); b.putString("first", "firstValue"); intent.putExtras(b); intent.setData(Uri.parse( " www.PKbest.CN" )); int requestCode = 88 33 55 33; //88335533 为自定义的整数 . 此时就不要关掉 A ,因为要有得知返回的状态 this. startActivityForResult (intent,requestCode); // 正前方 提示:不要关闭 A protected void onActivityResult (int requestCode , int resultCode , Intent data ) {// 正前方 提示:获取 B 返回的信息 } B.java 获取来自 A 的数据 Intent intentFromA = B.this.getIntent(); Bundle bundleFromA = intentFromA.getExtras(); String firstValue = bundleFromA .getString("first"); Bundle toABundle = new Bundle(); toABundle.putString("second", "return string value to a"); intentFromA.putExtras(toABundle); // 正前方 提示:返回给 A int REQUEST_CODE = 8833; B.this. setResult (REQUEST_CODE, intentFromA ); // 正前方 提示:返回给 A B.this.finish();