我们也可以使用隐士意图激活自定义的界面,并且可以携带数据:
效果:
点击第二个按钮后:
点击最后一个按钮(激活系统短消息界面)后:
附代码:
主窗体的代码:
1 package com.yy.twoactivity; 2 3 import android.app.Activity; 4 import android.content.Intent; 5 import android.net.Uri; 6 import android.os.Bundle; 7 import android.view.View; 8 9 public class MainActivity extends Activity {10 11 @Override12 protected void onCreate(Bundle savedInstanceState) {13 super.onCreate(savedInstanceState);14 setContentView(R.layout.activity_main);15 }16 17 /**18 * 点击事件,当用户点击的时候跳转到第二个界面19 * @param view20 */21 public void click(View view){22 //意图23 Intent intent=new Intent();24 //设置包和界面,显式意图25 intent.setClassName(this, "com.yy.twoactivity.SecondActivity");26 //跳转到新的设定好的界面27 startActivity(intent);28 }29 30 /**31 * 点击事件,当用户点击的时候隐式意图跳转到第二个界面32 * @param view33 */34 public void click3(View view){35 //意图36 Intent intent=new Intent();37 //设置包和界面,隐式意图38 intent.setAction("com.yy.xxx");39 //设置额外的信息【非必需,和主配置文件对应】40 intent.addCategory(Intent.CATEGORY_DEFAULT);41 //设置数据【非必须,和主配置文件对应,可以携带数据】42 intent.setData(Uri.parse("yy:adbc"));43 //跳转到新的设定好的界面44 startActivity(intent);45 }46 47 /**48 * 点击事件,激活系统的应用 程序界面49 * @param view50 */51 public void click2(View view){52 //意图53 Intent intent=new Intent();54 //设置预打开系统应用的包和界面,显式意图55 // cmp=com.android.gallery/com.android.camera.GalleryPicker 56 intent.setClassName("com.android.gallery", "com.android.camera.GalleryPicker");57 //跳转到新的设定好的界面58 startActivity(intent);59 }60 61 /**62 * 点击事件,当用户点击的时候隐式意图激活系统短消息63 * @param view64 */65 public void click4(View view){66 //意图67 Intent intent=new Intent();68 //设置包和界面,隐式意图69 intent.setAction("android.intent.action.SENDTO");70 //设置额外的信息【非必需,和主配置文件对应】71 intent.addCategory("android.intent.category.DEFAULT");72 //设置数据【非必须,和主配置文件对应,可以携带数据】,前缀是看短信息应用配置文件的scheme知道的73 intent.setData(Uri.parse("sms:15588890908"));74 //跳转到新的设定好的界面75 startActivity(intent);76 }77 }
第二个窗体的代码:
1 package com.yy.twoactivity; 2 3 import android.app.Activity; 4 import android.content.Intent; 5 import android.net.Uri; 6 import android.os.Bundle; 7 8 public class SecondActivity extends Activity { 9 @Override10 protected void onCreate(Bundle savedInstanceState) {11 super.onCreate(savedInstanceState);12 setContentView(R.layout.activity2);13 14 //获取打开当前界面的意图15 Intent intent=getIntent();16 Uri uri=intent.getData();17 //获取到使用intent.setData(Uri.parse("yy:adbc"));携带的数据18 String data=uri.getSchemeSpecificPart();19 System.out.println(data);20 }21 }
另外需要在AndoridManifest.xml文件中配置:
16 9 1510 1411 12 13 18 19 23 2420 21 22