码迷,mamicode.com
首页 > 其他好文 > 详细

Intent深入学习

时间:2016-05-07 09:50:56      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:

启动活动有一种是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明天接着看


Intent深入学习

标签:

原文地址:http://blog.csdn.net/qingziguanjun1/article/details/51334772

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!