第一种方式,用action来跳转。   1、使用Action跳转,如果有一个 程序的 AndroidManifest.xml中的某一个Activity的IntentFilter段中定义了包含了相同的Action那么这个Intent 就与这个目标Action匹配。如果这个IntentFilter段中没有定义 Type,Category,那么这个 Activity就匹配了。但是如果手机中有两个以上的 程序匹配,那么就会弹出一个对话可框来提示说明。 Action的值在Android中有很多预定义,如果你想直接转到你自己定义的Intent接收者,你可以在接收者的 IntentFilter中加入一个自定义的Action值(同时要设定 Category值为"android.intent.category.DEFAULT"),在你的Intent中设定该值为Intent的 Action,就直接能跳转到你自己的Intent接收者中。因为这个Action在系统中是唯一的。   2,data/type,你可以用Uri来做为data,比如Uri uri = Uri.parse(http://www.google.com); Intent i = new Intent(Intent.ACTION_VIEW,uri);手机的Intent分发过程中,会根据http://www.google.com 的scheme判断出数据类型type 手机的Brower则能匹配它,在Brower的Manifest.xml中的IntenFilter中首先有ACTION_VIEW Action,也能处理http:的type。   3,至于分类Category,一般不要去在Intent中设置它,如果你写Intent的接收者,就在Manifest.xml的 Activity的 IntentFilter中包含android.category.DEFAULT,这样所有不设置 Category(Intent.addCategory(String c);)的Intent都会与这个Category匹配。   4,extras(附加信息),是其它所有附加信息的集合。使用extras可以为 组件提供扩展信息,比如,如果要执行“发送电子邮件”这个动作,可以将电子邮件的标题、正文等保存在extras里,传给电子邮件发送 组件。   Java代码 package com.android.edit_text;    import android.app.Activity;  import android.content.Intent;  import android.os.Bundle;  import android.view.KeyEvent;  import android.view.View;  import android.widget.EditText;    public class MyEditText extends Activity {    private TextView m_TextView;  private EditText m_EditText;      @Override  public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);           m_EditText = (EditText) this.findViewById(R.id.EditText01);         m_EditText.setOnKeyListener(editTextKeyListener);  }    private EditText.OnKeyListener editTextKeyListener = new EditText.OnKeyListener() {           @Override         public boolean onKey(View arg0, int arg1, KeyEvent arg2) {                               // action跳转,需要在AndroidManifest.xml中配置action           Intent i = new Intent("android.intent.action.mydialog");           MyEditText.this.startActivity(i);                     return false;         }  };  }  复制代码Xml代码 <?xml version="1.0" encoding="utf-8"?>                       < intent-filter>                                      < /intent-filter>        < /activity>                                 < intent-filter>                                        < /intent-filter>        < /activity>          复制代码第二种方式,用类名跳转。   Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述, 负责找到对应的 组件,将 Intent传递给调用的 组件,并完成 组件的调用。Intent在这里起着实现调用者与被调用者之间的解耦作用。 Intent传递过程中,要找到目标消费者(另一个Activity,IntentReceiver或Service),也就是Intent的响应者。   Java代码 package com.Android;    import android.app.Activity;  import android.content.Intent;  import android.os.Bundle;  import android.view.View;  import android.view.View.OnClickListener;    public class FormStuff extends Activity {  @Override  public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.formstuff);           final ImageButton button = (ImageButton) findViewById(R.id.android_button);         button.setOnClickListener(new OnClickListener() {           public void onClick(View v) {  // 用类名跳转,需要在AndroidManifest.xml中申明activity              Intent intent = new Intent(FormStuff.this, HelloTabWidget.class);              startActivity(intent);           }         });    }  复制代码Xml代码 <?xml version="1.0" encoding="utf-8"?>                         < intent-filter>                                      < /intent-filter>        < /activity>        < !--申明activity-->          复制代码一些Intent的常用发:   Java代码 显示网页  1. Uri uri = Uri.parse("http://google.com");  2. Intent it = new Intent(Intent.ACTION_VIEW, uri);  3. startActivity(it);    显示地图    1. Uri uri = Uri.parse("geo:38.899533,-77.036476");  2. Intent it = new Intent(Intent.ACTION_VIEW, uri);  3. startActivity(it);  4. //其他 geo URI 範例  5. //geo:latitude,longitude  6. //geo:latitude,longitude?z=zoom  7. //geo:0,0?q=my+street+address  8. //geo:0,0?q=business+near+city  9. //google.streetview:cbll=lat,lng&cbp=1,yaw,,pitch,zoom&mz=mapZoom        路径规划    1. Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=startLat startLng&daddr=endLat endLng&hl=en");  2. Intent it = new Intent(Intent.ACTION_VIEW, uri);  3. startActivity(it);  4. //where startLat, startLng, endLat, endLng are a long with 6 decimals like: 50.123456    打电话  1. //叫出拨号 程序    2. Uri uri = Uri.parse("tel:0800000123");  3. Intent it = new Intent(Intent.ACTION_DIAL, uri);  4. startActivity(it);    1. //直接打电话出去  2. Uri uri = Uri.parse("tel:0800000123");  3. Intent it = new Intent(Intent.ACTION_CALL, uri);  4. startActivity(it);  5. //用這个,要在 AndroidManifest.xml 中,加上  6. //<uses-permission id="android.permission.CALL_PHONE" />      传送SMS/MMS  1. //调用短信 程序    2. Intent it = new Intent(Intent.ACTION_VIEW, uri);  3. it.putExtra("sms_body", "The SMS text");  4. it.setType("vnd.android-dir/mms-sms");  5. startActivity(it);      1. //传送消息    2. Uri uri = Uri.parse("smsto://0800000123");  3. Intent it = new Intent(Intent.ACTION_SENDTO, uri);  4. it.putExtra("sms_body", "The SMS text");  5. startActivity(it);      1. //传送 MMS  2. Uri uri = Uri.parse("content://media/external/images/media/23");  3. Intent it = new Intent(Intent.ACTION_SEND);  4. it.putExtra("sms_body", "some text");  5. it.putExtra(Intent.EXTRA_STREAM, uri);  6. it.setType("image/png");  7. startActivity(it);    传送 Email  1. Uri uri = Uri.parse("mailto:xxx@abc.com");  2. Intent it = new Intent(Intent.ACTION_SENDTO, uri);  3. startActivity(it);    1. Intent it = new Intent(Intent.ACTION_SEND);  2. it.putExtra(Intent.EXTRA_EMAIL, "me@abc.com");  3. it.putExtra(Intent.EXTRA_TEXT, "The email body text");  4. it.setType("text/plain");  5. startActivity(Intent.createChooser(it, "Choose Email Client"));    1. Intent it=new Intent(Intent.ACTION_SEND);      2. String[] tos={"me@abc.com"};      3. String[] ccs={"you@abc.com"};      4. it.putExtra(Intent.EXTRA_EMAIL, tos);      5. it.putExtra(Intent.EXTRA_CC, ccs);      6. it.putExtra(Intent.EXTRA_TEXT, "The email body text");      7. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");      8. it.setType("message/rfc822");      9. startActivity(Intent.createChooser(it, "Choose Email Client"));      1. //传送附件  2. Intent it = new Intent(Intent.ACTION_SEND);  3. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");  4. it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3");  5. sendIntent.setType("audio/mp3");  6. startActivity(Intent.createChooser(it, "Choose Email Client"));      播放多媒体     Uri uri = Uri.parse("file:///sdcard/song.mp3");     Intent it = new Intent(Intent.ACTION_VIEW, uri);     it.setType("audio/mp3");     startActivity(it);             Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");     Intent it = new Intent(Intent.ACTION_VIEW, uri);       startActivity(it);          Market 相关  1.        //寻找某个应用    2.        Uri uri = Uri.parse("market://search?q=pname:pkg_name");    3.        Intent it = new Intent(Intent.ACTION_VIEW, uri);  4.        startActivity(it);  5.        //where pkg_name is the full package path for an application      1.        //显示某个应用的相关信息    2.        Uri uri = Uri.parse("market://details?id=app_id");  3.        Intent it = new Intent(Intent.ACTION_VIEW, uri);    4.        startActivity(it);  5.        //where app_id is the application ID, find the ID  6.        //by clicking on your application on Market home  7.        //page, and notice the ID from the address bar       
1.        Uri uri = Uri.fromParts("package", strPackageName, null);    2.        Intent it = new Intent(Intent.ACTION_DELETE, uri);  3.        startActivity(it);

更多相关文章

  1. react-navigation使用及dva初探二
  2. Flutter 与 Android(安卓)的交互
  3. Android(安卓)应用的自动升级、更新模块的实现
  4. 微信Android模块化架构重构实践
  5. 【译】Android主题动态切换开源库Prism基本原理1-核心库
  6. Android特色开发之账户管理
  7. android手把手教你开发launcher(五)
  8. WPF UI组件学习(一) - Window的外观实现及常用属性
  9. Android之组件详解

随机推荐

  1. android计算器
  2. android 获取sd卡根目录
  3. Android 获得当前进程PackageName
  4. android 4.0 屏蔽home键实现
  5. Android VelocityTracker使用总结
  6. android 轮播图无限循环,自动播放
  7. android Handler内存泄露 kotlin内存泄露
  8. Android(安卓)setbackgroundcolor()方法
  9. Android点击EditText以外区域隐藏键盘Fra
  10. Android 搜索不到蓝牙设备