首页
JAVA笔记
数据库笔记
混乱记忆
小站记
您现在的位置
android Intent 的使用
简介: Intent 来协助完成 android 各个组件之间的通讯。比如说:启动一个 activity、传递消息给一个receiver、启动或停止一个后台的service

启动 Activity A 启动 B

  1. 配置 AndroidManifest.xml
    <activity android:name="org.xiaoyunduo.launcher.A" android:label="testLauncher">
               <intent-filter >
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
    </activity>

    <activity android:name="org.xiaoyunduo.launcher.B"  android:label="testLauncher" >
                <intent-filter >
                    <action android:name="test" />
                    <category android:name="android.intent.category.DEFAULT" />
                   <data android:scheme="test" android:host="mytest"/>
                </intent-filter>
    </activity>
  2.  
  3. 启动代码(A 类中)

    //直接启动
    Intent intent = new Intent(A.this, B.class);
    startActivity(intent);//根据配置的 action name 启动
    Intent intent = new Intent(“test”);
    startActivity(intent);

    //根据配置的 action name 启动 若出现同名 action name 时可再设置URI 启动
    //uri 定义格式 与 <data android:scheme="test" android:host="mytest"/> 对应
    Uri uri = Uri.parse("test://mytest");
    Intent intent = new Intent(“test”,uri);
    startActivity(intent); 

给 receiver 传递消息
示例创建一个可启动 activity 的快捷方式
    Intent intent = new Intent();
    intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
    intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(A.this,A.class));
    intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "myShortcut");
    Parcelable iconResource = Intent.ShortcutIconResource.fromContext(A.this, R.drawable.ic_launcher);
    intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource);
    intent.putExtra("duplicate", false);
    sendBroadcast(intent);   //传输消息

启动或停止 service

  1. 配置 AndroidManifest.xml
    <service android:name="com.xiaoyunduo.services.MyService" />
  2. 启动 service 代码
    Intent intent = new Intent(ForegroundService.ACTION_FOREGROUND);
    intent.setClass(MyActivity.this, MyService.class);
    startService(intent);
  3. 停止 service 代码
    stopService(new Intent(MyActivity.this, MyService.class));