无活动来处理意向 [英] No Activity found to handle Intent

查看:118
本文介绍了无活动来处理意向的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图发动意图打开链接到Android Market。

Android清单部分看起来是这样的:

 <活动机器人:名称=com.surreall.sixdice.Start机器人:标签=六骰的Andr​​oid版本:screenOrientation =画像机器人:configChanges =keyboardHidden |定位>
    <意向滤光器>
                <作用机器人:名称=android.intent.action.MAIN/>
                <类机器人:名称=android.intent.category.LAUNCHER/>
    &所述; /意图滤光器>
    <意向滤光器>
                <作用机器人:名称=android.intent.action.VIEW/>
                <类机器人:名称=android.intent.category.DEFAULT/>
    &所述; /意图滤光器>
< /活性GT;
 

推出的意图是这样的:

 公共无效的onClick(视图v){
        字符串PublisherID =酒吧:surreallgames;
        乌里marketUri = Uri.parse(?市场://搜Q =+ PublisherID);
        意图marketIntent =新的意图(Intent.ACTION_VIEW,marketUri);
        startActivity(marketIntent);


                }
 

logcat的输出:

  06-17 17:38:47.393:E / AndroidRuntime(476):致命异常:主要
06-17 17:38:47.393:E / AndroidRuntime(476):android.content.ActivityNotFoundException:无活动处理意向{行为= android.intent.action.VIEW DAT =市场://搜Q =酒馆? surreallgames}
06-17 17:38:47.393:E / AndroidRuntime(476):在android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1409)
06-17 17:38:47.393:E / AndroidRuntime(476):在android.app.Instrumentation.execStartActivity(Instrumentation.java:1379)
06-17 17:38:47.393:E / AndroidRuntime(476):在android.app.Activity.startActivityForResult(Activity.java:2827)
06-17 17:38:47.393:E / AndroidRuntime(476):在android.app.Activity.startActivity(Activity.java:2933)
06-17 17:38:47.393:E / AndroidRuntime(476):在com.surreall.sixdice.Start $ 9.onClick(Start.java:265)
06-17 17:38:47.393:E / AndroidRuntime(476):在android.view.View.performClick(View.java:2485)
06-17 17:38:47.393:E / AndroidRuntime(476):在android.view.View $ PerformClick.run(View.java:9080)
06-17 17:38:47.393:E / AndroidRuntime(476):在android.os.Handler.handleCallback(Handler.java:587)
06-17 17:38:47.393:E / AndroidRuntime(476):在android.os.Handler.dispatchMessage(Handler.java:92)
06-17 17:38:47.393:E / AndroidRuntime(476):在android.os.Looper.loop(Looper.java:123)
06-17 17:38:47.393:E / AndroidRuntime(476):在android.app.ActivityThread.main(ActivityThread.java:3683)
06-17 17:38:47.393:E / AndroidRuntime(476):在java.lang.reflect.Method.invokeNative(本机方法)
06-17 17:38:47.393:E / AndroidRuntime(476):在java.lang.reflect.Method.invoke(Method.java:507)
06-17 17:38:47.393:E / AndroidRuntime(476):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839)
06-17 17:38:47.393:E / AndroidRuntime(476):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-17 17:38:47.393:E / AndroidRuntime(476):在dalvik.system.NativeStart.main(本机方法)
 

解决方案

您正在运行上缺乏谷歌Play商店,如仿真器,Kindle Fire的,等一个Android环境中,这code。

如果您在仿真器遇到此,测试有Play商店的设备上这个code路径。

如果你在某种硬件的缺乏Play商店,或者如果你打算分发您的应用程序缺乏Play商店的设备遇到此,无论是处理异常或使用 PackageManager resolveActivity()来确定,如果你的意图将接替之前调用 startActivity()

 如果(intent.resolveActivity(getPackageManager())!= NULL)
    startActivityForResult(意向,0);
其他
    ...
 

i am attempting to launch an intent to open a link to the android market.

android manifest portion looks like this:

<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>

launching the intent looks like:

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 output:

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)

解决方案

You are running this code on an Android environment that lacks the Google Play Store, such as an emulator, Kindle Fire, etc.

If you are encountering this on an emulator, test this code path on a device that has the Play Store.

If you are encountering this on some piece of hardware that lacks the Play Store, or if you are planning on distributing your app to devices that lack the Play Store, either handle the exception or use PackageManager and resolveActivity() to determine if your Intent will succeed before calling startActivity().

if(intent.resolveActivity(getPackageManager()) != null)
    startActivityForResult(intent, 0);
else
    ...

这篇关于无活动来处理意向的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆