2016-02-29 61 views
1

指定Android#startActivity(Intent)以拋出android.content.ActivityNotFoundException,如果沒有發現運行給定Intent的Activity。來自Activity#startActivity的IllegalArgumentException(意圖)

我因此有像

try { 
    // Try to start activity provided by external app: 
    startActivity(intent); 
} catch (ActivityNotFoundException e) { 
    // [...] Inform user about external app needed 
    // for this functionality to work. 
} 

其捕捉ActivityNotFoundException來處理,其中未安裝外部應用程序的情況下的代碼。

但是,從Google Play開發者控制檯的崩潰& ANR部分,我開始將崩潰次數設爲IllegalArgumentException: Unknown component com.example.package/com.example.package.Activity。代碼調用startActivity()是否準備好處理該異常?這是一個框架錯誤(或文檔錯誤)?

+0

您是否已在清單中定義此活動? –

+0

不,該活動是在外部應用程序中定義的(可能會或可能不會安裝)。 – fornwall

回答

0

這種異常通常在您尚未在清單文件中聲明時產生。所以,儘量在某處做 您的應用程序標籤內做到這一點

<activity 
      android:name="Your_Activity_Name" 
      android:theme="Whatever your theme is" 
      </activity> 

如果它的任何其他問題,請讓我知道。

+0

該活動由外部應用程序定義,該應用程序可能會或可能不會由用戶安裝。我試圖捕獲'ActivityNotFoundException'來處理應用程序未安裝時的情況。 – fornwall

0

您可以使用此代碼來檢查它。這是更好的方法,然後處理異常

List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent, 
      PackageManager.MATCH_DEFAULT_ONLY); 

if (list.size() > 0) 
{ 
// start your activity 
}