美文网首页
五、intent

五、intent

作者: giraffecode9668 | 来源:发表于2019-05-31 10:02 被阅读0次

2019-05-31

显式Intent的实现方式

//方式1: 
Intent intent = new Intent(context,目标类);
startActivity(intent);

//方式2
Intent intent = new Intent( );
ComponentName cn = new ComponentName(context,目标类);
intent.setComponent(cn);
startActivity(intent);

隐式Intent的实现方式

//1:action
public final static String CRAZYIT_ACTION ="org.crazyit.intent.action.CRAZYIT_ACTION";
Intent intent = new Intent();
intent.setAction(MainActivity.CRAZYIT_ACTION);
startActivity(intent);


//2:category
final static String CRAZYIT_CATEGORY = "org.crazyit.intent.category.CRAZYIT_CATEGORY";
Intent intent = new Intent();
intent.addCategory(MainActivity.CRAZYIT_CATEGORY);
startActivity(intent);


//3:data
Intent intent = new Intent();
intent.setDataAndType(Uri.parse("lee://www.fkjava.org:8888/mypath"), "abc/xyz");


//4:type
//未指定Data属性,Type才会发挥作用



<intent-filter>
    <!-- 指定该Activity能响应action为指定字符串的Intent -->
    <action android:name="org.crazyit.intent.action.CRAZYIT_ACTION" />
    <!-- 指定该Activity能响应category为指定字符串的Intent -->
    <category android:name="org.crazyit.intent.category.CRAZYIT_CATEGORY" />
    <!-- 指定该Activity能响应category为android.intent.category.DEFAULT的Intent -->
    <category android:name="android.intent.category.DEFAULT" />

    <!-- 需要Intent的Data属性的scheme是lee,且host是www.fkjava.orgport是8888,且path是/mypath且type是abc/xyz,才可启动该Activity -->
    <data android:scheme="lee"
        android:host="www.fkjava.org"
        android:port="8888"
        android:path="/mypath"
        android:mimeType="abc/xyz"/>

</intent-filter>
个数 <intent-filter…/>元素
0~N <category…/>子元素
0~N <action…/>子元素
0~1 <data…/>子元素
0~1 <Type…/>子元素

Extras属性

Bundle data=new Bundle();       
data.putString("name", sTemp1);
data.putString("pwd", sTemp2);       
Intent intent=new Intent(LoginCallActivity.this,DataShowActivity.class);    

intent.putExtras(data);

//intent默认Bundle
//intent.putExtras("name",sTemp1);
//intent.putExtras("pwd",sTemp2);

系统内置Action

1,web浏览器

Uri uri= Uri.parse("http://kuikui.javaeye.com");
intent = new Intent(Intent.ACTION_VIEW, uri);

2,地图

Uri mapUri = Uri.parse("geo:38.899533,-77.036476");
intent = new Intent(Intent.ACTION_VIEW, mapUri);

3,调拨打电话界面

Uri telUri = Uri.parse("tel:100861");
intent = new Intent(Intent.ACTION_DIAL, telUri);

4,直接拨打电话

Uri callUri = Uri.parse("tel:100861");
intent = new Intent(Intent.ACTION_CALL, callUri);

5,卸载

Uri uninstallUri = Uri.fromParts("package", "xxx", null);
intent = new Intent(Intent.ACTION_DELETE, uninstallUri);

6,安装

Uri installUri = Uri.fromParts("package", "xxx", null);
intent = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri);

7,播放

Uri playUri = Uri.parse("file:///sdcard/download/everything.mp3");
intent = new Intent(Intent.ACTION_VIEW, playUri);

8,调用发邮件

Uri emailUri = Uri.parse("mailto:shenrenkui@gmail.com");
intent = new Intent(Intent.ACTION_SENDTO, emailUri);

9,发邮件

intent = new Intent(Intent.ACTION_SEND);
String[] tos = { "shenrenkui@gmail.com" };
String[] ccs = { "shenrenkui@gmail.com" };
intentputExtra(Intent.EXTRA_EMAIL, tos);
intent.putExtra(Intent.EXTRA_CC, ccs);
intent.putExtra(Intent.EXTRA_TEXT, "body");
intent.putExtra(Intent.EXTRA_SUBJECT, "subject");
intent.setType("message/rfc882");
Intent.createChooser(intent, "Choose Email Client");

10,发短信

Uri smsUri = Uri.parse("tel:100861");
intent = new Intent(Intent.ACTION_VIEW, smsUri);
intent.putExtra("sms_body", "shenrenkui");
intentt.setType("vnd.android-dir/mms-sms");

11,直接发邮件

Uri smsToUri = Uri.parse("smsto://100861");
intent = new Intent(Intent.ACTION_SENDTO, smsToUri);
intent.putExtra("sms_body", "shenrenkui");

12,发彩信

Uri mmsUri = Uri.parse("content://media/external/images/media/23");
intent = new Intent(Intent.ACTION_SEND);
intent.putExtra("sms_body", "shenrenkui");
intent.putExtra(Intent.EXTRA_STREAM, mmsUri);
intent.setType("image/png");

intent添加tab


public class MainActivity extends TabActivity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // 获取该Activity里面的TabHost组件
        TabHost tabHost = getTabHost();
        // 使用Intent添加第一个Tab页面
        tabHost.addTab(tabHost
            .newTabSpec("tab1")
            .setIndicator("已接电话",
                getResources().getDrawable(R.drawable.ic_launcher))
            .setContent(new Intent(this, BeCalledActivity.class)));
        // 使用Intent添加第二个Tab页面
        tabHost.addTab(tabHost.newTabSpec("tab1")
            .setIndicator("呼出电话")
            .setContent(new Intent(this, CalledActivity.class)));
        // 使用Intent添加第三个Tab页面
        tabHost.addTab(tabHost.newTabSpec("tab1")
            .setIndicator("未接电话")
            .setContent(new Intent(this, NoCallActivity.class)));
    }
}

相关文章

网友评论

      本文标题:五、intent

      本文链接:https://www.haomeiwen.com/subject/uybitctx.html