安卓Intent.ACTION_VIEW在调用应用商店URL时崩溃

3
我想为我的应用程序创建一个反馈字段。我只想像这样将用户重定向到应用市场。
String APP_MARKET_URL = "market://details?id=com.my.application"; 

Intent intent = new Intent( Intent.ACTION_VIEW, Uri.parse(APP_MARKET_URL)); 
this.startActivity(intent);

但是当我执行它时,我遇到了这个错误:
02-13 11:07:33.147: W/dalvikvm(238): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
02-13 11:07:33.155: E/AndroidRuntime(238): Uncaught handler: thread main exiting due to uncaught exception
02-13 11:07:33.225: E/AndroidRuntime(238): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.picca.pointage.NoterApplication }
02-13 11:07:33.225: E/AndroidRuntime(238):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)
02-13 11:07:33.225: E/AndroidRuntime(238):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
02-13 11:07:33.225: E/AndroidRuntime(238):  at android.app.Activity.startActivityForResult(Activity.java:2749)
02-13 11:07:33.225: E/AndroidRuntime(238):  at android.app.Activity.startActivity(Activity.java:2855)
02-13 11:07:33.225: E/AndroidRuntime(238):  at android.preference.Preference.performClick(Preference.java:829)
02-13 11:07:33.225: E/AndroidRuntime(238):  at android.preference.PreferenceScreen.onItemClick(PreferenceScreen.java:190)
02-13 11:07:33.225: E/AndroidRuntime(238):  at android.widget.AdapterView.performItemClick(AdapterView.java:284)
02-13 11:07:33.225: E/AndroidRuntime(238):  at android.widget.ListView.performItemClick(ListView.java:3285)
02-13 11:07:33.225: E/AndroidRuntime(238):  at android.widget.AbsListView$PerformClick.run(AbsListView.java:1640)
02-13 11:07:33.225: E/AndroidRuntime(238):  at android.os.Handler.handleCallback(Handler.java:587)
02-13 11:07:33.225: E/AndroidRuntime(238):  at android.os.Handler.dispatchMessage(Handler.java:92)
02-13 11:07:33.225: E/AndroidRuntime(238):  at android.os.Looper.loop(Looper.java:123)
02-13 11:07:33.225: E/AndroidRuntime(238):  at android.app.ActivityThread.main(ActivityThread.java:4363)
02-13 11:07:33.225: E/AndroidRuntime(238):  at java.lang.reflect.Method.invokeNative(Native Method)
02-13 11:07:33.225: E/AndroidRuntime(238):  at java.lang.reflect.Method.invoke(Method.java:521)
02-13 11:07:33.225: E/AndroidRuntime(238):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
02-13 11:07:33.225: E/AndroidRuntime(238):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
02-13 11:07:33.225: E/AndroidRuntime(238):  at dalvik.system.NativeStart.main(Native Method)

我正在使用Android 1.5。我没有在清单文件中添加具体的入口。有人有想法或其他方法来调用我的市场页面吗?


你的活动 NoterApplication 在清单文件中注册了吗? - Shashank Kadne
你在清单文件中声明了权限吗? - arpit
您完全确定您启动了此处显示的意图吗?act=com.picca.pointage.NoterApplication 表示导致崩溃的意图具有完全不同的操作 *(而非 VIEW 操作)*。 - user658042
3个回答

4

在之前的评论中,你可以使用以下代码检查设备上是否可以解析Intent,然后再使用它启动新的Activity:

    PackageManager pm = context.getPackageManager();
    ComponentName cn = intent.resolveActivity(pm);
    if (cn != null) {
        this.startActivity(intent);
    }

2

尝试向您的意图中添加以下内容。

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);


救了我的命!! - TuxForLife
救了我的命!! - undefined

0

如果您在模拟器上运行此代码,您应该知道模拟器上没有Android市场应用程序,因此它会抛出此异常。在大多数真实设备上不应该有问题。希望这可以帮助到您。


是的,在模拟器上崩溃了,但在设备上没有!谢谢! - Julien
1
我知道这是一个老问题的回答,但我不确定它是否完整。有一些没有市场的Android设备(如Kindle Fire),因此在启动它之前,您必须首先检查是否有人可以接收您的意图。 - Raz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接