在Android中Intent的概念及應用(一)——顯示Intent和隱式Intent


Intent尋找目標組件的兩種方式:

顯式Intent:通過指定Intent組件名稱來實現的,它一般用在知道目標組件名稱的前提下,一般是在相同的應用程序內部實現的。

隱式Intent:通過Intent Filter來實現的,它一般用在沒有明確指出目標組件名稱的前提下,一般是用於在不同應用程序之間。

一、顯示Intent:

創建一個Activity的完整過程:

1、手動創建一個類,讓其繼承自Activity:

  public class MyAty extends Activity

2、讓其綁定一個視圖:

  public class MyAty extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.myaty);

    }
  }

3、AndroidMainfest.xml文件進行Intent的配置:

  <activity android:name=".MyAty"/>  <!--<activity android:name="com.w.learnintent.MyAty"/>-->

4、啟動的功能代碼:

  activity_main.xml文件中:<Button android:text="Start MyAty" android:id="@+id/btnStartMyAty" />

  MainActivity.java文件中:

    findViewById(R.id.btnStartMyAty).setOnClickListener(new View.OnClickListener(){
      @Override
      public void onClick(View v) {
        startActivity(new Intent(MainActivity.this,MyAty.class));  //顯示Intent
      }

二、隱式Intent:

1、AndroidMainfest.xml文件進行Intent的配置:

  <activity android:name=".MyAty">
    <intent-filter>
      <category android:name="android.intent.category.DEFAULT"/>
      <action android:name="com.w.learnIntent.intent.action.MyAty"/>
    </intent-filter>
  </activity>

2、在被啟動的Activity——MyAty.java中創建一個字符串ACTION:

  public static final String ACTION = "com.w.learnIntent.intent.action.MyAty";

3、啟動的功能代碼:

  startActivity(new Intent(MyAty.ACTION));  //隱式Intent

三、不同應用程序之間(隱式Intent):

1、在原有項目基礎上新建module,創建另一個程序。

2、原有項目AndroidMainfest.xml文件進行Intent的配置:

  <activity android:name=".MyAty" android:exported="false"> <!-- android:exported:該服務是否能夠被其他應用程序組件調用或跟它交互-->
    <intent-filter>
      <category android:name="android.intent.category.DEFAULT"/>
      <action android:name="com.w.learnIntent.intent.action.MyAty"/>
    </intent-filter>
  </activity>

3、新項目的MainActivity.java文件中:

  findViewById(R.id.btnStartMyAty).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
      try {
          startActivity(new Intent("com.w.learnIntent.intent.action.MyAty"));
        }catch(Exception e){
      Toast.makeText(MainActivity.this,"無法啟動指定的Activity",Toast.LENGTH_SHORT).show();   //Toast.LENGTH_SHORT短時間呈現
    }
  }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM