更新
根据我下面的回答,我的直接问题得到了解决。我的环境(PC + 设备)不允许在 DEBUG 构建中自定义权限。
我确信几周前我能够很好地运行 DEBUG 构建 - 因此描述了“间歇性”错误。
更新 2
代码在其他开发人员的机器上同步出来,通过 Eclipse 在他的设备上以 DEBUG 模式正常工作。在我的设备上,它在他的机器上不起作用。
我的机器上的 DEBUG 构建也可以在其他设备上正常工作。
这让我怀疑我的设备是否出了问题?
我有自定义权限的间歇性“权限拒绝”问题Intents
。它是代码在生产和工作中的一种,但有时在进行新构建时,它会停止工作。我之前只是靠运气修复它,通过重启(设备和电脑)、清理项目、卸载/重新安装、重复等过程......这是不可接受的。
据我所见,我正在为我Intents
在我的应用程序中广播的自定义权限做所有正确的事情。但是 logcat 给了我以下常见的错误:
- W/BroadcastQueue(389):权限拒绝:来自 com.test(pid=22030,uid=10002)的广播意图 { act=A_ACTION flg=0x10} 需要 A_PERMISSION,因为已注册接收器 BroadcastFilter{43918d50 u0 ReceiverList{4391cad8 22030 com.test /10002/u0 远程:430576d0}}
在 4.2.1 (Galaxy Nexus) 和 4.2.2 (Nexus 7) 上,或
- W/ActivityManager(2002):权限拒绝:接收 Intent { act=A_ACTION flg=0x10 } 到 ProcessRecord{41a12748 31496:com.test/10115}(pid=31496,uid=10115)由于发件人 com.test( uid 10115)
在 4.0 (S2) 和 2.3.3 (Samsung Ace)。
即标准错误。
我的清单说:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test"
android:versionCode="1"
android:versionName="4.10.0.3" >
<permission
android:name="A_PERMISSION"
android:description="@string/broadcast_permission_desc"
android:label="@string/broadcast_permission_label"
android:permissionGroup="@string/broadcast_permission_group"
android:protectionLevel="signature" />
<uses-permission android:name="A_PERMISSION" />
etc.....
这些字符串被定义为(fwiw):
<string name="broadcast_permission_label">Private Broadcast</string>
<string name="broadcast_permission_desc">This permission allows the necessary components of the application to receive private broadcasts that are sent within the application.</string>
<string name="broadcast_permission_name">A_PERMISSION</string>
<string name="broadcast_permission_group">A_GROUP</string>
我的基本 APPLICATION 子类中有一个方法,用于进行广播:
public void sendBroadcast(Intent i)
{
// hardcoded custom permission
super.sendBroadcast(i, "A_PERMISSION");
}
我BroadcastReceiver
从这样的内部注册我的Fragment
:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// hardcoded custom permission
MyApp.getInstance().registerReceiver(myReceiver, myFilter,
"A_PERMISSION", null);
}
我不高兴地检查了以下相关问题:
我认为这涵盖了本网站上的类似问题。
我的问题是它间歇性但浪费了大量时间,即一些构建在所有手机上都可以工作,一些构建在所有手机上都失败。
我想知道这是否是其中一个框架(Android OS,或者可能是 Eclipse / Android SDK)中的问题。不幸的是,我的谷歌搜索只会让我找到常见解决方案的更常见问题。