标签:
启动活动有一种是startActivityForResult,这个需要掌握。
启动服务,总是使用显式意图。
intent filter表示这个组件可能要接受的意图的类型。也就说,意图有type??什么意思,如果不指定intent filter,只能显示启动了。
建立一个意图:
Component name:在显示意图,表示明确启动的类,使用setComponent,setClass,setClassName来设置,所以见过setClass设置的,
如果不加,就是隐式意图了。
Action:要执行的动作,比如ACTION_VIEW ACTION_SEND,一般可以作为被其他活动或应用启动,一般是定义在<intent-filter>中的
Data:在sunshine内容提供器的时候看到过,
Intent intent = new Intent(getApplicationContext(), DetailActivity.class) .setData(itemUir); startActivity(intent);
在DetailActivity的OnCreate中:getIntent().getData()获得保存的这个Uri,用来查询具体的信息。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detail); if (savedInstanceState == null) { Bundle arguments = new Bundle(); arguments.putParcelable(DetailFragment.DETAIL_URI, getIntent().getData()); DetailFragment fragment = new DetailFragment(); fragment.setArguments(arguments); getSupportFragmentManager().beginTransaction() .add(R.id.weather_detail_container, fragment) .commit(); } }
Category:和Action一起定义在<intent-filter>中,二者组合出现。
Extras:传递额外的信息,这个也常用。
Flags:没用到还
一般定义的话,最多就是这样了:或者最简单,连<intent-filter>都没有,都比较简单,不过用起来也不简单啊。
<activity android:name=".app.IsolatedService$Controller" android:label="@string/activity_isolated_service_controller" android:launchMode="singleTop" android:enabled="@bool/atLeastJellyBean"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.SAMPLE_CODE" /> </intent-filter> </activity>
使用隐式意图注意:
为了确保有一个能响应,先测试下:
// Create the text message with a string Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage); sendIntent.setType("text/plain"); // Verify that the intent will resolve to an activity if (sendIntent.resolveActivity(getPackageManager()) != null) { startActivity(sendIntent); }
使用createChooser,展示标题,让用户选择
Intent sendIntent = new Intent(Intent.ACTION_SEND); ... // Always use string resources for UI text. // This says something like "Share this photo with" String title = getResources().getString(R.string.chooser_title); // Create intent to show the chooser dialog Intent chooser = Intent.createChooser(sendIntent, title); // Verify the original intent will resolve to at least one activity if (sendIntent.resolveActivity(getPackageManager()) != null) { startActivity(chooser); }
intent-filer明天接着看
标签:
原文地址:http://blog.csdn.net/qingziguanjun1/article/details/51334772