2017-07-07 59 views
0

我有一個通知信使,我希望用戶在按下「推送通知」時有權訪問Google Play商店,否則將其重定向到網址。 所以我的代碼是這樣的:如何在通知中打開新的意圖時處理異常?

Intent intent = new Intent(new Intent(Intent.ACTION_VIEW, Uri.parse("market://dev?id=" + appPackageName2))); 
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT); 
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this); 
    notificationBuilder.setContentTitle("FCM Notification") 
      .setContentText(remoteMessage.getNotification().getBody()) 
      .setAutoCancel(true) 
      .setSmallIcon(R.mipmap.ic_launcher) 
      .setContentIntent(pendingIntent); 
    NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); 
    notificationManager.notify(0, notificationBuilder.build()); 

我想在上面的代碼是這樣的:

try { 
     startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://dev?id=" + appPackageName2))); 
} catch (android.content.ActivityNotFoundException anfe) { 
     startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/dev?id=" + appPackageName2))); 
    } 

回答

2

您可以使用PackageManager.resolveActivity,以確定是否有一個應用程序安裝,可以處理一個特定的意圖。您可以使用它來檢查是否可以處理market: URI。

請確保您仔細閱讀關聯的javadoc,因爲它有一些關於隱式/顯式意圖的註釋。