通過Intent的resolveActivity方法,并對包管理器進行查詢以确定是否有Activity能夠啟動該Intent:
// 撥打電話
// Create the implicit Intent to use to start a new Activity.
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:2463983"));
// 檢查是否存在能執行該action的activity
.
PackageManager pm = getPackageManager();
ComponentName cn = intent.resolveActivity(pm);
if (cn == null) {
//如果沒有,那麼就去Google Play去找找看
Uri marketUri =
Uri.parse("market://search?q=pname:com.myapp.packagename");
Intent marketIntent = new
Intent(Intent.ACTION_VIEW).setData(marketUri);
//如果Google Play上有,那麼就去下載下傳一個APP來
// capable of performing the required action. Otherwise log an
if (marketIntent.resolveActivity(pm) != null)
startActivity(marketIntent);
else
Log.e(TAG, "Market client not available.");
}
else
startActivity(intent);