【问题标题】:Sending non-protected broadcast com.motorola.motocare.INTENT_TRIGGER java.lang.Throwable发送不受保护的广播 com.motorola.motocare.INTENT_TRIGGER java.lang.Throwable
【发布时间】:2018-03-13 04:53:00
【问题描述】:

我搜索了有关堆栈溢出的不同答案。即使我禁用服务和广播接收器,它也会显示错误。

这是我的清单文件:-

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.appzoy.croatiaapp">

<!-- to make api calls -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<!-- for qr code scanning -->
<uses-permission android:name="android.permission.CAMERA" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    android:fullBackupContent="@xml/backup_descriptor">
    <activity
        android:name=".MainActivity" />
    <activity android:name=".LoginActivity" />
    <activity
        android:name=".TicketsListActivity"
        android:theme="@style/AppTheme.NoActionBar"
        android:windowSoftInputMode="stateHidden" />
    <activity android:name=".SplashActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".SettingsActivity"
       android:theme="@style/AppTheme.NoActionBar"></activity>
    <receiver android:name=".receivers.AlarmReceiverSubmit"
        android:exported="false"
        android:enabled="true"/>

    <service android:name=".services.AlarmService"
        android:exported="false"
        android:enabled="true"/>

    <receiver android:name=".receivers.NetworkChangeReceiver"
        android:exported="false"
        android:enabled="true">
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
        </intent-filter>
    </receiver>
</application>

每当我关闭导航抽屉时SettingsActivity 出现在前台,这是我使用此代码设置警报的活动:-

 private void setAlarm(Calendar calSet) {

    Toast.makeText(this, "Alarm is set @ " + calSet.getTime(), Toast.LENGTH_SHORT).show();

    Intent intent = new Intent(getBaseContext(), AlarmService.class);
    PendingIntent pendingIntent = PendingIntent.getService(getBaseContext(), 1, intent, 0);
    AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calSet.getTimeInMillis(),AlarmManager.INTERVAL_DAY, pendingIntent);
}

private void setAlarmSubmitTickets(Calendar calSet) {

    Toast.makeText(this, "Alarm is set @ " + calSet.getTime(), Toast.LENGTH_SHORT).show();

    Intent intent = new Intent(getBaseContext(), AlarmReceiverSubmit.class);
    intent.putExtra("selectedTime", txtSendTicketsTime.getText().toString());
    PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), 1, intent, 0);
    AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calSet.getTimeInMillis(),AlarmManager.INTERVAL_DAY, pendingIntent);
}

而我的日志文件如下:-

03-13 10:12:48.253 1576-22821/? E/ActivityManager:从系统 4512:com.motorola.process.system/1000 pkg com.motorola.motgeofencesvc 发送不受保护的广播 com.motorola.motocare.INTENT_TRIGGER java.lang.Throwable 在 com.android.server.am.ActivityManagerService.broadcastIntentLocked(ActivityManagerService.java:18226) 在 com.android.server.am.ActivityManagerService.broadcastIntent(ActivityManagerService.java:18826) 在 android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:512) 在 com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2906) 在 android.os.Binder.execTransact(Binder.java:565)

【问题讨论】:

标签: android android-studio


【解决方案1】:

如果您在 AndroidManifest.xml 中声明了"android:sharedUserId="android.uid.system",则声明受保护的广播。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yourcompany.mypackage"
android:sharedUserId="android.uid.system">

<uses-sdk
    android:minSdkVersion="17"
    android:targetSdkVersion="24" />

<protected-broadcast android:name="com.motorola.motocare.INTENT_TRIGGER" />

您可以使用 Android Studio 进行构建。

【讨论】:

  • 这似乎适用于我的 Android 8.0 环境!谢谢!或者,您可以将protected-broadcast 定义添加到frameworks/base/core/res/AndroidManifest.xml 以供平台开发人员使用。
  • 试图将受保护的广播放在清单中,收到警告“此处不允许元素受保护的广播”
  • android:sharedUserId 是常量在 API 级别 29 中已弃用。
  • 从 API 级别 29 开始,您应该使用 uses-permission 而不是 protected-broadcast
【解决方案2】:

我刚刚忽略了这个错误,在 ZTE Axon 7 上似乎无关紧要。一定与操作系统搞砸有关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    • 1970-01-01
    • 2022-10-18
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    相关资源
    最近更新 更多