Android开发之使用意图调用内置应用程序

意图可以调用活动,也常被用来调用内置应用程序,如加载web页面,拨号页面,内置地图应用等等。下面就用例子来说明该用法。

效果图如下:

实现代码如下:

上图中的启动MyBrowser是用意图来调用MyWebBrowserActivity活动外,其他三个都是在MainActivity类中直接通过new一个对应类型的Intent,然后通过startActivity()方法来调用内置程序。

MainActivity类代码:

package com.example.intents;


import com.example.intents.R;

import android.R.anim;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {

    int request_code = 1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    
    public void onClickWebbrowser(View view){
        Intent i = new Intent(android.content.Intent.ACTION_VIEW,Uri.parse("http://m.baidu.com/"));
        startActivity(i);
    }
    public void onClickCall(View view){
//        Toast.makeText(getApplicationContext(), "dddddddd", Toast.LENGTH_SHORT).show();
//        Toast.makeText(getApplicationContext(), "dddddddd", Toast.LENGTH_SHORT).show();
//        Toast.makeText(getApplicationContext(), "dddddddd", Toast.LENGTH_SHORT).show();
        Intent intent = new Intent(android.content.Intent.ACTION_DIAL);
        startActivity(intent);
    }
    public void onClickMap(View view){
        Intent intent = new Intent(android.content.Intent.ACTION_VIEW,Uri.parse("geo:37.0,-122.0"));
        startActivity(intent);
    }
    public void onClickLaunchMyBrowser(View view){
//        Intent intent = new Intent("com.example.intents.MyBrowserActivity");
        Intent intent = new Intent("android.intent.action.VIEW");
//        Intent intent = new Intent("wrong");
        intent.setData(Uri.parse("http://m.baidu.com"));
        //startActivity(intent);
        intent.addCategory("com.example.intents.apps");
        startActivity(Intent.createChooser(intent, "Open URL using..."));
    }
    
}

MyBrowserActivity类代码:

public class MyBrowserActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_browser);
        
        Uri url = getIntent().getData();
        WebView webView = (WebView)findViewById(R.id.WebBrowser1);
        webView.setWebViewClient(new Callback());
        webView.loadUrl(url.toString());
    }
    private class Callback extends WebViewClient{
        public boolean shouldOverrideUrlLoading(WebView view,String url){
            return false;
        }
    }
原文地址:https://www.cnblogs.com/JczmDeveloper/p/3654767.html