2014-06-14 4 views
0

J'ai un inflateur de menu avec 2 options, About, et Rate. A propos de fonctionne très bien, lorsque le taux est cliqué, il force se ferme.force fermer lorsque vous cliquez sur l'élément de menu android

case R.id.About: 
    Intent i = new Intent(this, About.class); 
    startActivity(i); 
    break; 
    case R.id.Rate: 
    Intent marketIntent = new Intent(Intent.ACTION_VIEW, 
       Uri.parse("market://details? 
        id="+"com.androidsleepmachine.gamble")); 
     startActivity(marketIntent); 
      } 

et le code manifeste

<activity android:name="com.androidsleepmachine.gamble.About"/> 
    <activity android:name="com.androidsleepmachine.gamble.Rate" /> 

et Logcat

06-13 23:59:30.294: E/AndroidRuntime(1576): FATAL EXCEPTION: main 
06-13 23:59:30.294: E/AndroidRuntime(1576): android.content.ActivityNotFoundException: 
No Activity found to handle Intent { act=android.intent.action.VIEW 
dat=market://details?id=com.androidsleepmachine.gamble } 

Je suis sûr qu'il est quelque chose de simple que je l'ai oublié, mais il me rend fou. Encore une fois, À propos de fonctionne très bien, taux provoque une force de fermeture au lieu de charger l'URL du marché à mon application afin que l'utilisateur peut le noter.

+0

Est-ce sur un émulateur ou un périphérique? – matiash

Répondre

3

Il est possible que l'application Play Store ne soit pas installée sur l'appareil ou l'émulateur sur lequel vous exécutez ce code. Lorsque vous essayez de démarrer une intention pour laquelle il n'y a aucun filtre valide dans le système, vous obtiendrez ces exceptions.

Une alternative serait de vérifier cela (via PackageManager) avant d'essayer de démarrer l'intention. Si aucune activité ne correspond, utilisez l'URI Web (c'est-à-dire http://play.google.com/store/apps/details?id=<package_name>) à la place.

List<ResolveInfo> apps = context.getPackageManager().queryIntentActivities(marketIntent, 0); 
if (apps.size() != 0) 
    <use market intent> 
else 
    <use http intent> 

(Ou, un peu plus grossière mais plus simple, attraper ActivityNotFoundException et faire la même chose).

+0

Je viens de remarquer qu'il n'y a pas d'application Play Store sur l'émulateur. Je vais essayer de charger l'application sur un appareil demain et l'exécuter à nouveau. Merci – user2727048

+0

@ user2727048 Oui, c'était l'explication la plus probable :) Heureux d'avoir aidé. – matiash

2

C'est ce que vous voulez faire pour vous assurer qu'il fonctionne même s'il n'y a pas Play Store:

final String appPackageName = getPackageName(); 

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

Ce lancerez le navigateur si Play Store App n'est pas installé.

Questions connexes