2011-12-06 20 views
5

Uygulamamda, dosyanın içeriğini görmek için startActivity özelliğini kullanmalıyım veya belirli bir dosyayı açmak için varsayılan uygulamayı kullanmam gerekir, ancak bazen android sistem gerekli uygulamayı yüklemeyebilir.ActivityNotFoundException nasıl kullanılır?

Sorum, bu özel durumun nasıl ele alınacağıdır. Ben bir tost istiyorum, FC ..

Herhangi bir öneri? THX

+0

kullanabilirsiniz. Ve bu tür bir İstisnayı çözmek için aktivitenizi Manifest dosyasına kaydetmelisiniz. Kayıt olmak için her aktiviteyi kaydettirmeye gerek yok, ancak startActivity'i kullandığınızda evet Etkinliğinizi kaydettirmelisiniz. – anddev

+0

Tamam .. Denedim. İşe yarıyor. THX – xuyao

+0

Düzenlenmiş cevabıma bakın. Teşekkürler .. – user370305

cevap

11

Sadece basit .. Manifest'inizde dosyasında gibi

, bu etkinliği eklemek

<activity android:name=".ActivityName" 
        android:label="@string/app_name"> 
     </activity> 

DÜZENLEME: Şimdi

ActivityNOtFoundException,

kodunuzu koymak yakalamak için
try { 

    // Your startActivity code wich throws exception 
} catch (ActivityNotFoundException activityNotFound) { 

    // Now, You can catch the exception here and do what you want 
} 

Not: Bu ActivityNotFound Özel Durumunu yakaladığınızda dikkatli olun, ancak manifest dosyasını çalışma zamanına değiştiremezsiniz, istisna ile karşılaştıysanız ve bu etkinlik etiketini çalışma zamanında eklemek istiyorsanız, bunu yapamazsınız. Eğer tost olarak hatayı görüntülemek istiyorsanız etkinlik manifest dosyasında yer almayan çünkü

+0

Üzgünüm .. Bu ihtiyacım olan şey değil. Sistemin hangi aktivitenin çalışacağına karar vermesini istiyorum. – xuyao

1

sonra

try { 
    startActivity(intent); 

} catch (ActivityNotFoundException e) { 
    // TODO: handle exception 
    //Show Toast... 
} 

hata oluşur.

<activity android:name=".yourActivity" 
     android:label="@string/app_name"> 
</activity> 
+0

doğru ~ teşekkürler ~ – xuyao

2

Sorunun daha fazla olduğunu düşünüyorum: "belirli bir özel durumu nasıl yakalayabilirim ve bir güç kaybını nasıl önleyebilirim".

try { 
    // here is your code that can potentially throw the exception and the force crash 
} catch (ActivityNotFoundException activityNotFound) { 
    Toast.makeText(this, "your error message", Toast.LENGTH_SHORT).show(); 
    // maybe also log the exception, for future debugging? 
} 

bir uyarı, bu kötüye kullanmayın: Bu kodda böyle yaparız onu "sessizce yutmak" istisnalar tehlikeli ve istikrarsız başvurunuzu yapabilir ve tanıtabilirsiniz garip ve zor-debug davranış . o zaman deneyin/catch ve bununla başa kullanabilirsiniz İstisna işlemek istiyorsanız

+0

Teşekkürler, benim için çalışıyor. – xuyao

7

Sen resolveActivity yöntemi

if (intent.resolveActivity(getPackageManager()) != null) { 
     startActivity(intent); 
    }else { 
     Toast.makeText(this,"No suitable app found!",Toast.LENGTH_SHORT).show(); 
    }