Latest web development tutorials

안드로이드 목적 (의도) 및 필터 (필터)

안드로이드 의도는 액션의 추상적 설명을 실행한다. 그것은이 startActivity를 활동을 시작할 수 있습니다, broadcastIntent이 관심있는 라디오 수신기 구성 요소에 방송을 보내, startService 백엔드 서비스와 통신하기 위해 (의도) 또는 bindService (의도, ServiceConnection, int)를.

텐트 자체 (텐트 오브젝트)는 동작의 개요에 대한 설명을 보유 수동 데이터 구조를 수행한다.

예를 들어, 활성이, 메일 클라이언트를 열고 Android 기기에 메일을 보내주십시오. 이를 위해, 당신은 안드로이드 의도 프로세서에 적합한 선택으로 ACTION_SEND 활동을 보내야합니다. 특정 선택기는 사용자가 자신의 메시지 데이터를 전송하는 방법을 결정하게 할 수있는 적절한 인터페이스를 지정.

Intent email = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:"));
email.putExtra(Intent.EXTRA_EMAIL, recipients);
email.putExtra(Intent.EXTRA_SUBJECT, subject.getText().toString());
email.putExtra(Intent.EXTRA_TEXT, body.getText().toString());
startActivity(Intent.createChooser(email, "Choose an email client from..."));

이메일 활동을 열고 상기 메소드를 호출 startActivity를 구문 코드의 실행 결과는 다음과 같다 :

영상

예를 들어, 활성을 가지고, 당신은 브라우저를 통해 안드로이드 기기에서 URL을 열어야합니다. 이를 위해, 브라우저에서 해당 URL을 열 안드로이드 프로세서의 의도에 이벤트 ACTION_WEB_SEARCH의 의도를 보냅니다. 일련의 활동들을 분석하고,이 경우 웹 브라우저 액티비티 의도에 가장 적합한 하나의 작업을 선택하여 프로세서 의도. 프로세서 목적은 웹 브라우저에 웹 페이지 주소를 전달하고, 웹 브라우저 활동을 엽니 다.

String q = "http://www.uprogrammer.cn";
Intent intent = new Intent(Intent.ACTION_WEB_SEARCH );
intent.putExtra(SearchManager.QUERY, q);
startActivity(intent);

위의 예는 안드로이드의 "www.uprogrammer.cn"검색 엔진을 찾고, 키워드 활동에 결과를 제공합니다.

각 구성 요소에 대해 - 활동, 서비스, 방송 수신기는 의도를 전달하는 독립적 인 메커니즘을 가지고있다.

아니오. 방법 및 설명
(1) Context.startActivity에 () : 의도는 새로운 활동을 시작하거나 새로운 무언가를 할 수있는 기존의 활동을하는 데 사용되는 메서드에 전달.
Context.startService () 메서드에 전달 목적, 지속적인 서비스에 대한 서비스 또는 새로운 정보를 초기화합니다.
3 Context.sendBroadcast () 메서드에 전달 의도는, 정보는 모든 이해 방송 수신기에 전달됩니다.

텐트 오브젝트

텐트 오브젝트는 안드로이드 시스템 정보를 수신하는 구성 요소에 대한 정보를 패키지 의도를 수신합니다.

텐트 오브젝트는 통신하거나 수행하려는 작업에 따라 다음 구성 요소가 포함되어 있습니다.

액션 (액션)

그것은 개체의 목적의 일부가 될 것입니다, 그것은 문자열로 표현된다. 의도 방송, 이벤트의 동작은보고됩니다. 작업은 주로 의도의 나머지 부분은 어떻게 구성되어 있는지를 결정합니다. 의도 클래스는 다른 의도에 따른 행동 상수의 집합을 정의합니다. 여기입니다 안드로이드 의도 표준 작업 목록.

모션 텐트 오브젝트가에, setAction () 메소드에 의해 설정 될 수있다, getAction에 의해 () 메소드는 읽을 수 있습니다.

데이터 (데이터)

필터 사양의 의도에 데이터를 추가합니다. 본 명세서는 단지 하나의 데이터 유형 (예 : 세포 유형 속성으로서)와, URI 또는 ​​데이터 타입과 URI를 모두 포함 할 수있다. URI에 의해 다른 부분의 속성을 지정합니다.

이러한 특성은 URL의 형식은 선택 사항뿐만 아니라, 서로 독립적 인 지정 -

  • 의도 필터 모드를 지정하지 않으면, 다른 모든 URI 속성은 무시됩니다.
  • 당신이 필터에 대한 호스트를 지정하지 않으면, 포트 특성 및 경로 속성은 무시됩니다.

사항 setData () 메소드는 URI 데이터를 setType ()는 메타 데이터의 유형을 지정할 수 지정할 수 setDataAndType () 동시에 URI 소자 타입을 지정할 수있다. GetData의 ()에 의해 URI는, getType로하여 유형을 읽고 () 읽을 수 있습니다.

여기에 액션 / 데이터 세트의 몇 가지 예입니다 -

아니오. 액션 / 데이터 및 설명
(1) ACTION_VIEW 함량 : // 연락처 / 인 / 1 : 1이 사용자 ID 정보를 표시한다.
ACTION_DIAL 내용 : // 연락처 / 인 / 1 : 표시 전화 걸기 및 사용자 데이터 1을 채 웁니다.
3 ACTION_VIEW 전화 : 123 :보기 전화 걸기 및 지정된 번호를 입력합니다.
4 ACTION_DIAL 전화 : 123 :보기 전화 걸기 및 지정된 번호를 입력합니다.
(5) ACTION_EDIT 내용 : // 연락처 / 인 / 1 : 사용자 ID 정보 (1)을 편집합니다.
6 ACTION_VIEW 내용 : // 연락처 / 인 / : 볼 수있는 사용자의 목록을 표시합니다.
(7) ACTION_SET_WALLPAPER : 바탕 화면 표시 설정을 선택합니다.
8 ACTION_SYNC는 : 데이터, 기본 값을 동기화 : android.intent.action.SYNC을
9 ACTION_SYSTEM_TUTORIAL : 오픈 플랫폼 정의 튜토리얼 (또는 기본 시작 자습서 자습서)
(10) ACTION_TIMEZONE_CHANGED : 시간대 통지를 변경하면
(11) ACTION_UNINSTALL_PACKAGE : 당신은 기본 제거 프로그램을 실행

범주

카테고리는 의도의 선택 부분 처리 의도 될 구성 요소의 유형에 대한 추가 정보가 포함 된 문자열입니다. 개체 카테고리를 추가하는 의도로 addCategory () 메소드는, removeCategory () 메소드는 추가 카테고리 전에 getCategories ()가 의도 개체 범주에 대한 모든 세트를 가져옵니다 제거합니다. 여기입니다 안드로이드 의도 표준 카테고리 목록.

당신은 우리가 적절한 활동을 선택하기 위해 해당 의사에 의해 카테고리를 사용하는 방법을 이해하기 위해 다음 섹션을 텐트 필터를 볼 수 있습니다.

추가 데이터

이 여기에 설명 된 키 추가 정보에 대한 의도를 다루는 어셈블리로 전달됩니다. putExtras에 의해 세트 (), getExtras () 메소드를 읽을 수 있습니다. 여기입니다 안드로이드 의도 표준 추가 데이터 목록.

태그 어떻게 치료를 시작한 후, 어떻게 활동을 시작하는 안드로이드 시스템을 나타내는 의도의 선택적 부분입니다.

아니오. 태그 및 설명
(1) FLAG_ACTIVITY_CLEAR_TASK : 의도, 그리고 Context.startActivity에 통과,이 태그는 이벤트가 시작되기 전에 클리어 활동과 관련된 기존의 모든 작업의 ​​원인이됩니다. 활동이 비어있는 작업의 루트 될 것입니다, 모든 이전의 활동이 종료된다. 마크의 사용은 FLAG_ACTIVITY_NEW_TASK와 결합 될 수있다.
FLAG_ACTIVITY_CLEAR_TOP :이 플래그가 설정되어 있으면, 이벤트는 현재 실행중인 작업을 시작한다. 새로운 의도는 (현재 상단에있는) 기존 활동에 전달로 새로운 활동 인스턴스가 시작되지 않습니다이 질병은, 그것의 모든 활동이 의도를 해제됩니다.
3 FLAG_ACTIVITY_NEW_TASK :이 태그는 일반적 행동의 이러한 활동 "시동"스타일에 사용되는 : 독립적으로 완료 할 수있는 데이터의 실행을 사용자에게 제공하고, 별도의 어린이들에게 완전한 활동을 시작합니다.

구성 요소 이름

구성 요소 개체 이름은 선택 필드 대표 활동, 서비스 또는 방송 수신기 클래스입니다. 설정하는 경우, 텐트 오브젝트 그렇지 안드로이드 다른 의도 다른 정보는 적절한 목표를 찾을 수 있도록 설계된 클래스의 인스턴스를 구현하도록 전달된다. setComponent에 의해 구성 요소 이름 (), setClass () 또는 setClassName () (설정하기) getComponent을 통해 얻을.


의도의 종류

안드로이드는 의도의 두 가지 유형을 지원합니다.

영상

명시 적 의도

명시 적 의도의 내면 세계가 다른 활동에 활동을 연결해야하는 경우, 우리는 의도를 표시 할 수 있습니다 응용 프로그램을 연결하려면 다음 그림은 두 번째 활동 버튼 첫 번째 활동을 클릭하여 연결을 보여줍니다.

영상

A는 형제 활동을 시작 시작하는 등 자회사 활동 또는 활동으로 - 이름으로 구성 요소를 대상의 목적은, 일반적으로 내부 정보의 응용 프로그램에 사용됩니다. 예를 들면 :

// 通过指定类名的显式意图
Intent i = new Intent(FirstActivity.this, SecondAcitivity.class);

// 启动目标活动
startActivity(i);

암시 적 의도

이러한 목표의 목적은 도메인 구성 요소 이름이 비어있는, 이름을하지 않습니다. 암시 적 인 텐트는 종종 다른 응용 프로그램의 구성 요소를 활성화하는 데 사용됩니다. 예를 들면 :

Intent read1=new Intent();
read1.setAction(android.content.Intent.ACTION_VIEW);
read1.setData(ContactsContract.Contacts.CONTENT_URI);
startActivity(read1);

위의 코드는 다음과 같은 결과를 설명한다 :

영상

대상 구성 요소가 의도 수신, 소스 구성 요소에 의해 전송 된 추가 데이터를 얻을 수 getExtras () 메서드를 사용할 수 있습니다. 예를 들면 :

// 在代码中的合适位置获取包对象
Bundle extras = getIntent().getExtras();

// 通过键解压数据
String value1 = extras.getString("Key1");
String value2 = extras.getString("Key2");

다음의 예는 안드로이드 기능이 내장 된 다양한 응용 프로그램을 실행 안드로이드 의도을 사용하는 방법을 보여줍니다.

단계 기술
(1) 안드로이드 스튜디오 IDE를 사용하면 인 텐트 필터라는 이름의 안드로이드 응용 프로그램, cn.uprogrammer.intentfilter라는 이름의 패키지를 만들 수 있습니다. 프로젝트를 만들 때, 그 대상 SDK를 확인하고 안드로이드 SDK의 최신 버전으로 컴파일 고급 API를 사용합니다.
"통화 시작"SRC / cn.uprogrammer.intentfilter / MainActivity.java 파일을 수정하고 코드 대응하는 두 개의 버튼 "시작 브라우저"에 두 개의 리스너를 정의 추가
3 고해상도 / 레이아웃 / activity_main.xml 레이아웃 파일, 온라인 레이아웃이 세 개의 버튼을 추가 수정합니다.
4 응용 프로그램을 실행하고 응용 프로그램에 대한 변경의 결과를 확인하기 위해 안드로이드 에뮬레이터를 실행합니다.

다음은 SRC / cn.uprogrammer.intentfilter / MainActivity.java 파일의 내용이다 :

package cn.uprogrammer.intentfilter;

import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;


public class MainActivity extends ActionBarActivity {
    Button b1,b2;

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

        b1=(Button)findViewById(R.id.button);
        b1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent i = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://www.uprogrammer.cn"));
                startActivity(i);
            }
        });

        b2=(Button)findViewById(R.id.button2);
        b2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(android.content.Intent.ACTION_VIEW,Uri.parse("tel:9510300000"));
                startActivity(i);
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.

        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

여기에 고해상도 / 레이아웃 / activity_main.xml 파일의 내용은 다음과 같습니다

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="意图实例"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:textSize="30dp" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="www.uprogrammer.cn"
        android:textColor="#ff87ff09"
        android:textSize="30dp"
        android:layout_below="@+id/textView1"
        android:layout_centerHorizontal="true" />

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageButton"
        android:src="@drawable/ic_launcher"
        android:layout_below="@+id/textView2"
        android:layout_centerHorizontal="true" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/editText"
        android:layout_below="@+id/imageButton"
        android:layout_alignRight="@+id/imageButton"
        android:layout_alignEnd="@+id/imageButton" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="启动浏览器"
        android:id="@+id/button"
        android:layout_alignTop="@+id/editText"
        android:layout_alignRight="@+id/textView1"
        android:layout_alignEnd="@+id/textView1"
        android:layout_alignLeft="@+id/imageButton"
        android:layout_alignStart="@+id/imageButton" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="启动电话"
        android:id="@+id/button2"
        android:layout_below="@+id/button"
        android:layout_alignLeft="@+id/button"
        android:layout_alignStart="@+id/button"
        android:layout_alignRight="@+id/textView2"
        android:layout_alignEnd="@+id/textView2" />
</RelativeLayout>

여기서 두 개의 새로운 상수를 정의 입술 / 값 / 문자열 / XML의 내용이다.

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="app_name">Intent filter</string>
   <string name="action_settings">Settings</string>
</resources>

다음은 기본의 AndroidManifest.xml 내용입니다 :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="cn.uprogrammer.intentfilter"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="22" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Base.Theme.AppCompat" >

        <activity
            android:name="cn.uprogrammer.intentfilter.MainActivity"
            android:label="@string/app_name" >

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

        </activity>

    </application>
</manifest>

그냥 수정 된 텐트 필터 응용 프로그램을 실행할 수 있습니다. 난 당신이 설치 환경 동안 AVD를 만든 가정합니다. 활성 파일에서 프로젝트를 열고 도구 모음에서 클릭 그림 아이콘은 안드로이드 Studio에서 응용 프로그램을 실행합니다. 안드로이드 Studio는 AVD에 응용 프로그램을 설치하고 시작합니다. 모두가 잘된다면 다음과 같이, 그것은 에뮬레이터 창에 표시됩니다 :

영상

이제, 브라우저를 실행 구성에 따라 다음과 같이 http://www.uprogrammer.cn 표시됩니다 "브라우저 시작"버튼을 클릭합니다 :

영상

유사한 방식으로, 당신은 당신이 전화 번호가 부여 된 전화를 걸 수 있도록 전화 인터페이스를 엽니 다 "시작 통화"버튼을 클릭 할 수 있습니다.


텐트 필터

당신은 다른 활동을 호출하는 의도를 사용하는 방법을 보았다. 안드로이드 운영 체제 활동, 서비스의 범위를 지정 필터를 사용하고, 방송 수신기는 의도 처리 할 의도 지정된 액션 범주, 데이터 패턴의 도움이 필요합니다. 사용 <의도 필터> 활동, 서비스 및 방송 수신기에서 해당 액션, 카테고리 및 데이터 유형에 나와있는 매니페스트 파일의 요소입니다.

다음 예는 카테고리 및 데이터 통화를 설정할 수 cn.uprogrammer.intentfilter.CustomActivity 활성의 작용에 의해 특정의 AndroidManifest.xml 파일의 일부를 나타낸다 :

<activity android:name=".CustomActivity"
   android:label="@string/app_name">

   <intent-filter>
      <action android:name="android.intent.action.VIEW" />
      <action android:name="com.example.MyApplication.LAUNCH" />
      <category android:name="android.intent.category.DEFAULT" />
      <data android:scheme="http" />
   </intent-filter>

</activity>

활동이 필터 위에 정의 된 경우, 다른 활동이 이벤트를 호출하는 다음과 같은 방법을 사용할 수 있습니다. android.intent.action.VIEW를 사용 cn.uprogrammer.intentfilter.LAUNCH 액션을 사용하고 android.intent.category.DEFAULT 카테고리를 제공합니다.

요소는 활동이 예상 데이터 유형 호출을 지정합니다. 위의 예는 사용자 활동은 데이터를 목적에 "http : //"시작 부분.

이 필터를 통해 케이스이며, 이는 사용자가 조립을 시작하도록 요청 될 여러 활동 또는 서비스로 전달하기위한 것이다. 대상 구성 요소를 찾을 수없는 경우, 예외가 발생합니다.

이벤트, 안드로이드 확인 시험의 시리즈를 호출하기 전에 :

  • <의도 필터> 필터 비워 둘 수 없습니다, 하나 이상의 행동을 더 나열 할 필요는 적어도 하나의 필터를 포함하는 요소, 그렇지 않으면 모든 의도를 차단합니다. 여러 작업이 언급되고있는 경우, 안드로이드는 작업을 호출하기 전에 내부에 언급 된 활동을 일치하도록 시도합니다.
  • 필터 <텐트 필터> 0, 하나 이상의 카테고리를 나열 할 수있다. 어떤 종류 언급되지 않으면 한 여러 카테고리가있는 경우,이 시험을 통해 안드로이드는 시험의 유형에 의해 의도 각 텐트 오브젝트의 분류는 분류의 필터와 일치한다.
  • 각각의 요소는 URI 및 데이터 타입 (요소 미디어 유형)를 지정할 수있다. 스키마, 호스트, 포트 및 경로 : 별도로 URI의 각 부분과 같은 속성이 있습니다. 의도의 유형은 URI는 오직 그 타입이 테스트 섹션을 통해 필터에 나열된 데이터 유형의 특정 유형과 일치 포함한다.

다음 예는 상술 한 실시 예의 일부 변형된다. 사용자 지정 작업을 호출하는 필터를 사용하는 방법; 이상이 될 것입니다 적절한 활동을 정의 할 의사가없는 경우 정의 된 의도는 두 가지 이벤트, 안드로이드를 호출하는 경우 여기에서 우리는 충돌을 해결하는 방법을 볼 수 있습니다.

단계 설명
(1) 안드로이드 스튜디오 IDE를 사용하면 인 텐트 필터라는 이름의 안드로이드 응용 프로그램, cn.uprogrammer.intentfilter라는 이름의 패키지를 만들 수 있습니다. 프로젝트를 만들 때, 그 대상 SDK를 확인하고 안드로이드 SDK의 최신 버전으로 컴파일 고급 API를 사용합니다.
, SRC / cn.uprogrammer.intentfilter / MainActivity.java 파일을 수정 문서에 정의 된 레이아웃에 대응하는 3 개의 버튼에 세 개의 리스너를 정의하는 코드를 추가합니다.
3 다른 의도 호출 할 수있는 활동을 포함하는 SRC / cn.uprogrammer.intentfilter / CustomActivity.java 파일을 추가합니다.
4 고해상도 / 레이아웃 / activity_main.xml 선형 레이아웃 파일은 세 개의 버튼을 추가 수정합니다.
(5) 입술 / lauout / custom_view.xml 레이아웃 파일을 추가, 단순히 추가 의도에 의해 전송 된 데이터를 표시한다.
6 ,의 AndroidManifest.xml 파일을 수정하여 사용자 지정 작업을 호출하기위한 규칙의 <의도 필터> 정의를 추가합니다.
(7) 응용 프로그램을 실행하고 응용 프로그램에 대한 변경의 결과를 확인하기 위해 안드로이드 에뮬레이터를 실행합니다.

다음은 SRC / cn.uprogrammer.intentfilter / MainActivity.java의의 내용입니다 :

package cn.uprogrammer.intentfilter;

import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;


public class MainActivity extends ActionBarActivity {
    Button b1,b2,b3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        b1=(Button)findViewById(R.id.button);

        b1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent i = new Intent(android.content.Intent.ACTION_VIEW,Uri.parse("http://www.uprogrammer.cn"));
                startActivity(i);
            }
        });

        b2=(Button)findViewById(R.id.button2);
        b2.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent i = new Intent("cn.uprogrammer.intentfilter.LAUNCH",Uri.parse("http://www.uprogrammer.cn"));
                startActivity(i);
            }
        });

        b3=(Button)findViewById(R.id.button3);
        b3.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent i = new Intent("cn.uprogrammer.intentfilter.LAUNCH",Uri.parse("https://www.uprogrammer.cn"));
                startActivity(i);
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.

        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

여기에 어떤 SRC / cn.uprogrammer.intentfilter / CustomActivity.java입니다 :

package cn.uprogrammer.intentfilter;

import android.app.Activity;
        import android.net.Uri;
        import android.os.Bundle;
        import android.widget.TextView;

public class CustomActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.custom_view);
        TextView label = (TextView) findViewById(R.id.show_data);
        Uri url = getIntent().getData();
        label.setText(url.toString());
    }
}

다음의 고해상도 / 레이아웃 / activity_main.xml의 내용은 다음과 같습니다

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="意图实例"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:textSize="30dp" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="www.uprogrammer.cn"
        android:textColor="#ff87ff09"
        android:textSize="30dp"
        android:layout_below="@+id/textView1"
        android:layout_centerHorizontal="true" />

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageButton"
        android:src="@drawable/ic_launcher"
        android:layout_below="@+id/textView2"
        android:layout_centerHorizontal="true" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/editText"
        android:layout_below="@+id/imageButton"
        android:layout_alignRight="@+id/imageButton"
        android:layout_alignEnd="@+id/imageButton" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="通过View动作启动浏览器"
        android:id="@+id/button"
        android:layout_alignTop="@+id/editText"
        android:layout_alignRight="@+id/textView1"
        android:layout_alignEnd="@+id/textView1"
        android:layout_alignLeft="@+id/imageButton"
        android:layout_alignStart="@+id/imageButton" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="通过Launch动作启动浏览器"
        android:id="@+id/button2"
        android:layout_below="@+id/button"
        android:layout_alignLeft="@+id/button"
        android:layout_alignStart="@+id/button"
        android:layout_alignRight="@+id/textView2"
        android:layout_alignEnd="@+id/textView2" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="异常情况"
        android:id="@+id/button3"
        android:layout_below="@+id/button2"
        android:layout_alignLeft="@+id/button2"
        android:layout_alignStart="@+id/button2"
        android:layout_alignRight="@+id/textView2"
        android:layout_alignEnd="@+id/textView2" />

</RelativeLayout>

여기에 고해상도 / 레이아웃 / custom_view.xml 파일의 내용은 다음과 같습니다

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent">

   <TextView android:id="@+id/show_data"
      android:layout_width="fill_parent"
      android:layout_height="400dp"/>

</LinearLayout>

여기에 입술 / 값 / strings.xml의 파일의 내용은 다음과 같습니다

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="app_name">My Application</string>
   <string name="action_settings">Settings</string>
</resources>

여기서의 AndroidManifest.xml 파일의 내용은 :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="cn.uprogrammer.intentfilter"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="22" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Base.Theme.AppCompat" >

        <activity
            android:name="cn.uprogrammer.intentfilter.MainActivity"
            android:label="@string/app_name" >

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

        </activity>

        <activity android:name="cn.uprogrammer.intentfilter.CustomActivity"
            android:label="@string/app_name">

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <action android:name="cn.uprogrammer.intentfilter.LAUNCH" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="http" />
        </intent-filter>

        </activity>

    </application>
</manifest>

그냥 수정 된 텐트 필터 응용 프로그램을 실행할 수 있습니다. 난 당신이 설치 환경 동안 AVD를 만든 가정합니다. 활성 파일에서 프로젝트를 열고 도구 모음에서 클릭 그림 아이콘은 안드로이드 Studio에서 응용 프로그램을 실행합니다. 안드로이드 Studio는 AVD에 응용 프로그램을 설치하고 시작합니다. 모두가 잘된다면 다음과 같이, 그것은 에뮬레이터 창에 표시됩니다 :

영상

"브라우저를 시작하는보기 조치를 사용하여."첫 번째 버튼을 클릭합니다 여기에 우리가 우리의 정의의 활동이 "android.intent.action.VIEW"를 포함 정의하고, 안드로이드 시스템은 웹 브라우저를 시작하는 기본 활성 VIEW 조치에 대응하기 위해 정의 된, 안드로이드는 시작하려는 것을 선택하기 위해 다음과 같은 옵션이 표시됩니다 활동

영상

당신은 브라우저를 선택하면, 안드로이드는 웹 브라우저를 열고 www.uprogrammer.cn 웹 사이트를 시작합니다. 당신이 IntentDemo 옵션을 선택하면, 안드로이드 CustomActivity을 시작, 아무것도하지 않은 이벤트는 캡처 및 텍스트 뷰에 전달 된 데이터를 표시합니다.

영상

지금하고 뒤로 버튼을 통해 안드로이드가 정의 된 활동을 선택하고 단순히 사용자 지정 작업을 시작 필터를 적용 버튼, "브라우저를 시작하여 실행 조치"를 클릭합니다.

다시 가서 "예외적 인 조건"버튼을 클릭 뒤로 버튼을 사용하여 효과적인 필터에 의해 주어진 안드로이드 의도를 찾기 위해 노력하지만, 효과적인 활동의 정의를 찾을 수 없습니다. 우리는 HTTP 데이터 대신 https를 사용하고 올바른 조치를 제공하기 때문에, 안드로이드되면 예외를 생성합니다. 다음과 같습니다 :

영상