我在广告的清单中有一个intent-filter声明。
<intent-filter>
<action android:name="android.intent.action.TIME_SET"/>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
<data android:scheme="content"/>
</intent-filter>
问题是当我移除<data android:scheme="content"/>
MY_PACKAGE_REPLACED 操作时收到,否则为。
在这种情况下,数据标签是什么?无法从文档中真正理解。
答案 0 :(得分:3)
<data>
元素表示&#34; Uri
上必须有Intent
,且必须符合<data>
<intent-filter>
元素中提供的规则{1}}&#34 ;.在您的特定情况下,规则为&#34; Uri
必须存在且必须具有content
方案&#34;。
由于这三个广播中没有一个使用content
Uri
,因此请删除<data>
元素。
答案 1 :(得分:0)
对于MY_PACKAGE_REPLACED
,你只需使用它:
<receiver
android:name=".UpgradeReceiver" android:enabled="true" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
</intent-filter>
</receiver>
public class UpgradeReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
if (!Intent.ACTION_MY_PACKAGE_REPLACED.equals(intent.getAction()))
return;
...
}
}
此外,请确保在禁用即时运行时运行应用,如上所述here。我注意到如果启用它并不总是收到...