2013-06-21 62 views
0

我幾年沒有做過異常處理,我似乎無法弄清楚我做錯了什麼。我有一個應用程序,打開我的另一個應用程序,如果用戶還沒有其他應用程序,我希望當前的應用程序重定向到Play商店。現在,如果應用程序未安裝,該程序將強制關閉。我當前的代碼是:ActivityNotFoundException處理

try{ 
    Intent intent = new Intent(); 
    PackageManager manager = getPackageManager(); 
    intent = manager.getLaunchIntentForPackage("my.app.package"); 
    intent.addCategory(Intent.CATEGORY_LAUNCHER); 
    startActivity(intent); 
    } 
catch(ActivityNotFoundException activityNotFound){ 
    Intent playStoreIntent = new Intent(Intent.ACTION_VIEW, 
    Uri.parse("market://details?id=my.app.package")); 
    startActivity(playStoreIntent); 
    } 

我有一種感覺,我做的事情非常愚蠢和misuing的catch功能。任何幫助將非常感激。

+1

可以發佈你的logcat異常嗎? –

+0

嘗試刪除'intent.addCategory(Intent.CATEGORY_LAUNCHER);' –

+0

getLaunchIntentForPackage()返回null如果「my.app.package」不存在,所以你得到一個NullPointerException在調用addCategory(...)意圖爲空。 –

回答

4

試試用此代碼。在評論中給出的解釋

String packageName = "my.app.package"; 
try{ 
     Intent intent = new Intent(); 
     PackageManager manager = getPackageManager(); 
     intent = manager.getLaunchIntentForPackage(packageName); 
     //if application not installed, intent to get launcher will be null 
     if(intent != null) { 
      intent.addCategory(Intent.CATEGORY_LAUNCHER); 
      startActivity(intent); 
     }else{ 
        //launch play store with package name 
      Intent playStoreIntent = new Intent(Intent.ACTION_VIEW, 
        Uri.parse("market://details?id=my.app.package")); 
        startActivity(playStoreIntent); 
     } 
     } 
    catch(ActivityNotFoundException activityNotFound){ 
     // to handle play store not installed scenario 
     Intent intent = new Intent(Intent.ACTION_VIEW, Uri 
       .parse("http://play.google.com/store/apps/details?id=" + packageName)); 
     startActivity(intent); 
} 
+0

這完美的作品!謝謝! –

0

你可以試試這個:try catch不是必需的。

Intent LaunchIntent = getActivity().getPackageManager().getLaunchIntentForPackage(packagename); 

if(null!=LaunchIntent) 
    { 
     startActivity(LaunchIntent); 
    } 
else 
    { 
     //intent to open the market. 
    } 
相關問題