一篇文章展示功能強大的 Intent 的主要用途

Intent

連接Activity、Service、BroadcastReceiver形成一個APP

在這裏插入圖片描述

Intent的基本應用:

  1. Activity之間的傳遞
  2. 開啓一個Service,比如後臺下載
  3. 傳遞廣播

Intent對象的屬性

Componentname屬性

  • setComponent()
    第一個參數:應用的包名
    第二個參數:要啓動的組件的類名
Intent intent=new Intent();
ComponentName componentName=new ComponentName("com.example.intent","com.example.intent.DetailActivity");
intent.setComponent(componentName);
startActivity(intent);

MainActivity :

public class MainActivity extends AppCompatActivity {

    private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button=(Button) findViewById(R.id.btn1);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent();
                ComponentName componentName=new ComponentName("com.example.intent","com.example.intent.DetailActivity");
                intent.setComponent(componentName);
                startActivity(intent);
            }
        });
    }
}

DetailActivity:

public class DetailActivity extends Activity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);
    }
}

Action和Data屬性

  • Action指定那個將要執行的動作
  • Data指定具體的數據

例如:
在這裏插入圖片描述
因此,一般結合使用

具體案例:實現打電話、發短信功能

可以參考下面這篇文章:
https://blog.csdn.net/qq_44824148/article/details/106853990

Action和Category屬性

  • Action指定那個將要執行的動作
  • Category對動作類別進行指定
具體案例:按鍵實現返回主頁面
protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_index);

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
        Button button=(Button)findViewById(R.id.btn);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent();
                intent.setAction(intent.ACTION_MAIN);
                intent.addCategory(intent.CATEGORY_HOME);
                startActivity(intent);
            }
        });
    }

Extras屬性

  • 應用於多個Activity進行數據交換
  • putExtras()、getExtras()

Flags屬性

  • 程序啓動之後如何處理
    intent.setFlags (intent.FLAG_ ACTIVITY_NO_HISTORY);相當於重新啓動

Intent種類

顯式Intent

創建Intent對象時指定目標組件名稱啓動目標組件
在這裏插入圖片描述

隱式Intent

創建Intent對象時指定action、category、dataAndroid系統自動匹配目標組件

Intent intent=new Intent();
intent.setAction(intent.ACTION_ VIEW);
intent.setData(Uri.parse("http://www.mingribook.com"));
startActivity(intent);

顯式Intent和隱式Intent的區別

顯式Intent :

  • 直接指定目標組件的名稱
  • 多用於在應用程序內部傳遞信息

隱式Intent :

  • 不會用組件名稱定義要激活的目標組件
  • 多用於在不同應用程序之間傳遞消息
  • 過濾器
    在這裏插入圖片描述

通過< intent-filter >標記在AndroidManifest.xml文件中配置

<intent-filter>
	<action...../>
	<categor...../>
	<data...../>
</intent-filter>
具體案例:跳轉到另一個Activity,實現全屏預覽圖片

具體點擊下面鏈接
https://blog.csdn.net/qq_44824148/article/details/106895386

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章