查詢是否有符合條件的Activity

使用Intent來啓動Activity


本文地址: http://blog.csdn.net/caroline_wendy/article/details/21455141


Intent的用途是綁定應用程序組件, 並在應用程序之間進行通信;

startActivity(), 傳遞Intent參數, 創建並顯示一個Activity;

使用Intent解析(resolution)動態的選擇最匹配的Activity.


顯示啓動Activity:

創建一個Intent, 指定當前的語境(context)Activity類(class), 然後傳遞給startActivity()進行創建;

簡易說明:

Intent intent = new Intent (MyActivity.this, MyOtherActivity.class);

startActivity(intent);


隱式啓動Activity:

可以讓匿名的應用程序組件響應動作請求, 如Intent傳遞一個撥號動作(ACTION_DIAL), 和電話號碼(URI);

注: URI, Uniform Resource Identifier, 通用資源標示符;

Android將在運行時把Intent解析爲最合適在指定數據類型上執行所需動作的類;

如果有多個Activity都能夠執行該動作, 則會向用戶提供多重選項, 如訪問URL, 會提示選擇瀏覽器;

使用resolveActivity()方法, 可以判斷, Android是否可以解析Intent;

代碼:

@Override  
protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.activity_main); //把佈局填充到用戶界面  
  
    Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:13800001111"));  
  
    PackageManager pm = getPackageManager();  
    ComponentName cn = intent.resolveActivity(pm);  
  
    if (cn == null) {  
        Uri marketUri = Uri.parse("market://search?q=pname:com.myapp.packagename");  
        Intent marketIntent = new Intent(Intent.ACTION_VIEW).setData(marketUri);  
  
        if (marketIntent.resolveActivity(pm) != null)  
            startActivity(marketIntent);  
        else  
            Log.d(TAG, "Market client not available");  
    } else  
        startActivity(intent);  
}  


原文地址:http://blog.csdn.net/caroline_wendy/article/details/21455141?utm_source=tuicool

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