2012-06-17 22 views
23

Android pazarına bir bağlantı açmak için bir niyet başlatmaya çalışıyorum.Hiçbir işlem bulunamadı Intent

android tezahür kısmı aşağıdaki gibidir: niyet başlatılması

<activity android:name="com.surreall.sixdice.Start" android:label="Six Dice" android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation"> 
    <intent-filter> 
       <action android:name="android.intent.action.MAIN" />        
       <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
    <intent-filter> 
       <action android:name="android.intent.action.VIEW" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

benziyor:

public void onClick(View v) { 
     String PublisherID = "pub:surreallgames"; 
     Uri marketUri = Uri.parse("market://search?q="+PublisherID); 
     Intent marketIntent = new Intent(Intent.ACTION_VIEW, marketUri);      
     startActivity(marketIntent); 


       } 

LogCat çıkışı:

06-17 17:38:47.393: E/AndroidRuntime(476): FATAL EXCEPTION: main 
06-17 17:38:47.393: E/AndroidRuntime(476): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=market://search?q=pub:surreallgames } 
06-17 17:38:47.393: E/AndroidRuntime(476): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1409) 
06-17 17:38:47.393: E/AndroidRuntime(476): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1379) 
06-17 17:38:47.393: E/AndroidRuntime(476): at android.app.Activity.startActivityForResult(Activity.java:2827) 
06-17 17:38:47.393: E/AndroidRuntime(476): at android.app.Activity.startActivity(Activity.java:2933) 
06-17 17:38:47.393: E/AndroidRuntime(476): at com.surreall.sixdice.Start$9.onClick(Start.java:265) 
06-17 17:38:47.393: E/AndroidRuntime(476): at android.view.View.performClick(View.java:2485) 
06-17 17:38:47.393: E/AndroidRuntime(476): at android.view.View$PerformClick.run(View.java:9080) 
06-17 17:38:47.393: E/AndroidRuntime(476): at android.os.Handler.handleCallback(Handler.java:587) 
06-17 17:38:47.393: E/AndroidRuntime(476): at android.os.Handler.dispatchMessage(Handler.java:92) 
06-17 17:38:47.393: E/AndroidRuntime(476): at android.os.Looper.loop(Looper.java:123) 
06-17 17:38:47.393: E/AndroidRuntime(476): at android.app.ActivityThread.main(ActivityThread.java:3683) 
06-17 17:38:47.393: E/AndroidRuntime(476): at java.lang.reflect.Method.invokeNative(Native Method) 
06-17 17:38:47.393: E/AndroidRuntime(476): at java.lang.reflect.Method.invoke(Method.java:507) 
06-17 17:38:47.393: E/AndroidRuntime(476): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
06-17 17:38:47.393: E/AndroidRuntime(476): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
06-17 17:38:47.393: E/AndroidRuntime(476): at dalvik.system.NativeStart.main(Native Method) 

cevap

70

Bir Android çevreye Bu kodu çalıştıran Bu emülatör, Kindle Fire, vb. gibi Google Play Store'dan yoksun.

Bunu bir taklitçiyle karşılaşıyorsanız, bu kod yolunu Play Store'a sahip bir aygıtta test edin. Eğer Play Store'u yoksun cihazlara uygulamanızı dağıtmak planlıyorsanız Play Store'u yoksun veya donanım bazı parçasına bu karşılaşıyorsanız

ya istisna işlemek veya PackageManager kullanabilir ve resolveActivity() olmadığını belirlemek için senin Intent, startActivity() numaralı telefonu aramadan önce başarılı olacaktır.

+1

shooootttt i pazar açmaya çalışıyorum şeffaf bir gövdeye sahip olmak için bir uygulama yüklü olmadığında mesajı zorlaştırmak çok zor… –

12

Intent'i güvenli bir şekilde başlatmak için Intent.createChooser() yöntemini kullanabilirsiniz. Niyetinizi kaldırabilecek herhangi bir uygulama yoksa, kullanıcıya bunu bildiren bir iletişim penceresi görüntülenir. Ancak Google Play Store kuruluysa, kullanıcı Play Store'daki amacı "açmayı" seçebilir.

startActivity(Intent.createChooser(marketIntent, "dialogTitle")); 
+0

olmadığından emülatörünüzde 2 gündür // url:

public static void rateApp(Context context) { try { context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + context.getPackageName()))); } catch (android.content.ActivityNotFoundException anfe) { viewInBrowser(context, "https://play.google.com/store/apps/details?id=" + context.getPackageName()); } } public static void viewInBrowser(Context context, String url) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); if (null != intent.resolveActivity(context.getPackageManager())) { context.startActivity(intent); } } 
CodyEngel

4

deneyin çağıran Etkinlik

<category android:name="android.intent.category.DEFAULT" /> 

ekledi.

4

Daha iyi çözüm Google Play uygulamasında uri açmaya olacaktır, ancak böyle uygulaması (bu niyet işleyecek hiçbir Aktivite) varsa - sadece bu örnekte olduğu gibi tarayıcıda uri açmaya deneyebilirsiniz:

Eğer söylediğin gibi Bu tam çalışır ancak bir uyarı seçici görünüyor olduğunu pazar :(PhoneGap 3.4
+0

5. satırda viewInBrowser'i mi kastediyorsunuz? –

+0

Evet, sabit yazım hatası. – localhost

0
private void OpenStoreIntent(){ 
     String url=""; 
     Intent storeintent=null; 
     try { 
      url = "market://details?id=com.myapp.packagename"; 
      storeintent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
      storeintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); 
      context.startActivity(storeintent); 
     } catch (final Exception e) { 
      url = "https://play.google.com/store/apps/details?id=com.myapp.packagename"; 
      storeintent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
      storeintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); 
      context.startActivity(storeintent); 
     } 

    } 
İlgili konular