android 隐式Intent 的使用

package com.jiyun.dell.intent;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import static android.net.Uri.*;

public class SecondActivity extends AppCompatActivity implements View.OnClickListener {

    private EditText et_shuru;
    private Button call;
    private Button dial;
    private Button send_message;
    private Button send_mms;
    private Button music;
    private Button camera;
    private Button from;
    private String shuru;
    private Intent intent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        initView();
    }

    private void initView() {
        et_shuru = (EditText) findViewById(R.id.et_shuru);
        call = (Button) findViewById(R.id.call);
        dial = (Button) findViewById(R.id.dial);
        send_message = (Button) findViewById(R.id.send_message);
        send_mms = (Button) findViewById(R.id.send_mms);
        music = (Button) findViewById(R.id.music);


        call.setOnClickListener(this);
        dial.setOnClickListener(this);
        send_message.setOnClickListener(this);
        send_mms.setOnClickListener(this);
        music.setOnClickListener(this);


        intent = new Intent();


    }

    @Override
    public void onClick(View v) {
        submit();
        Uri uri = parse("tel:" + shuru);
        switch (v.getId()) {
            case R.id.call:
                //直接拨打电话
                intent.setAction(Intent.ACTION_CALL);
                intent.setData(uri);


                break;
            case R.id.dial:
                //拨号
                intent.setAction(Intent.ACTION_DIAL);
                intent.setData(uri);


                break;
            case R.id.send_message:
                //发送短信
                Uri uri1 = Uri.parse("smsto:" + shuru);
                intent.setAction(Intent.ACTION_SENDTO);
                intent.setData(uri1);
                intent.putExtra("sms_body", "The SMS text");
                break;
            case R.id.send_mms:
                //发送彩信
                Uri parse = Uri.parse("file:///sdcard/图片/阅图/PictureUnlock_haokan_1178072_16:9.pictureunlock.jpg");//图片路径
                intent.setAction(Intent.ACTION_SEND);
                intent.putExtra("address", shuru);//电话号码
                intent.putExtra("sms_body", "some text");//彩信文字内容
                intent.putExtra(Intent.EXTRA_STREAM, parse);
                intent.setType("image/png");//图片类型
//18201024788
                break;
            case R.id.music:
                //打开系统自带的音乐播放器:
                intent.setAction("android.intent.action.MUSIC_PLAYER");
                break;


        }
        startActivity(intent);
    }

    private void submit() {
        // validate
        shuru = et_shuru.getText().toString().trim();
        if (TextUtils.isEmpty(shuru)) {
            Toast.makeText(this, "请输入号码", Toast.LENGTH_SHORT).show();
            return;
        }

        // TODO validate success, do something


    }
}

今天我突然要使用这些功能,却发现总是报找不到Activity,找了半天原因才发现原来是权限和意图过滤器没加。现在补上

<!--直接拨打电话-->
<uses-permission android:name="android.permission.CALL_PHONE" />

<!--发送彩信-->
<uses-permission android:name="android.permission.SEND_SMS" />

<!--连网的权限-->
<uses-permission android:name="android.permission.INTERNET" />

<!--读sd卡-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<!--写sd卡-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<activity android:name=".SecondActivity">

    <intent-filter>
        <action android:name="android.intent.action.CALL" />
        <action android:name="android.intent.action.SEND" />
    </intent-filter>
</activity>

权限用哪个功能添加哪个就行,没必要都加上。

我把权限和意图加上之后,发现还是报找不到activity,最后发现原因都想笑,居然是因为Uri没写 "tel:" ,所以,以后能复制就不要自己写,省的给自己找麻烦。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值