无活动来处理意向意向

2023-09-07 04:41:36 作者:喂,借个微笑

我试图发动意图打开链接到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
    ...

 
精彩推荐
图片推荐