Android 使用操作\拾取\活动拒绝权限

Android 使用操作\拾取\活动拒绝权限,android,Android,用户报告了以下强制关闭: java.lang.SecurityException:权限拒绝:从ProcessRecord{43ab9d40 15868:com.barkside.music/u0a10113}(pid=15868,uid=10113)启动Intent{act=android.Intent.action.PICK_ACTIVITY cmp=com.android.settings/.ActivityPicker(has extrass)}需要华为.android.Permissio

用户报告了以下强制关闭:

java.lang.SecurityException:权限拒绝:从ProcessRecord{43ab9d40 15868:com.barkside.music/u0a10113}(pid=15868,uid=10113)启动Intent{act=android.Intent.action.PICK_ACTIVITY cmp=com.android.settings/.ActivityPicker(has extrass)}需要华为.android.Permission.HW_签名或_系统 在android.os.Parcel.readException(Parcel.java:1434) 位于android.os.Parcel.readException(Parcel.java:1388) 在android.app.ActivityManagerProxy.startActivity上(ActivityManagerNative.java:1985) 位于android.app.Instrumentation.execStartActivity(Instrumentation.java:1419) 在android.app.Activity.startActivityForResult(Activity.java:3449)上 在android.app.Activity.startActivityForResult上(Activity.java:3388) 在com.barkside.music.playdinactivity.onAddApp(未知来源)

当我尝试使用启动触觉时会发生这种情况

我唯一的报告是华为Ascend Mate 2运行4.3版

所以华为似乎已经锁定了这一功能,只供系统应用程序使用。在不必实施我自己的选择活动的情况下,是否还有其他方法可以解决这个问题,列出要从中选择的已安装应用程序

编辑:添加代码:

Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
Intent pickIntent = new Intent(Intent.ACTION_PICK_ACTIVITY);
pickIntent.putExtra(Intent.EXTRA_TITLE, "Pick App to Play in");
pickIntent.putExtra(Intent.EXTRA_INTENT, mainIntent);
this.startActivityForResult(pickIntent, REQUEST_PICK_APPLICATION);
所以我尝试了createChooser,当然它实际上将意图发送给了用户选择的应用程序。我想要的是在onActivityResult中将活动类返回给我。ACTION\u CHOOSER能以某种方式做到这一点吗


不可以。因此,特别是考虑到您在
操作选择活动方面的问题,您必须使用
PackageManager
查询活动()
滚动您自己的UI。这让人想起编写一个主屏幕启动器,如中所示。

您为什么不使用
Intent.createChooser()
?还是你一开始就是这样得到的?您可能希望发布触发堆栈跟踪的代码。请注意,我并不是说您尝试使用
操作\u PICK\u活动
应该失败;我只是担心你的车祸。然而,我没有看到许多开发人员直接使用该操作。选择者模式似乎更为普遍,华为可能没有与选择者发生冲突(如果他们这样做,那将是一个更大的问题)。我只是想确定
操作选择活动的用例,因为这可以帮助我们找到替代方案。@老实说,我不知道操作选择程序可以用于我的此活动选择程序功能。但你是对的,这会解决我的问题。现在有点尴尬!我应该删除这个问题,回答它,还是你想回答它?我建议你做的是让选择器工作,然后写一个答案,显示你的旧代码和新代码,以记录你的解决方法。你的问题是完全正确的(如果不幸的话,华为不应该这样做…),所以最好记录下解决方法。听起来不错。感谢@commonware,感谢您提交错误报告!