Intent
連接Activity、Service、BroadcastReceiver形成一個APP
Intent的基本應用:
- Activity之間的傳遞
- 開啓一個Service,比如後臺下載
- 傳遞廣播
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