【问题标题】:Starting application on boot completed启动时启动应用程序已完成
【发布时间】:2013-12-03 02:36:15
【问题描述】:

以下是我用于在设备打开时启动我的应用程序的代码。

public class BootReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("BootReceiver","intent received");

        Intent myIntent = new Intent(context, ACT_Home.class);
        myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(myIntent);
    }

}

在清单中(作为<Application>child):

<receiver android:name="host.alarmmanager.BootReceiver">
   <intent-filter >
      <action android:name="android.intent.action.BOOT_COMPLETED"/>
   </intent-filter>
</receiver>

Manifest 内的权限如下:

<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.VIBRATE" />
<uses-feature android:name="android.hardware.camera"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>

这在 Android 3.2.2 上运行良好,但如果我在 Android 4.0.3 上尝试相同的应用程序,广播接收器不会收到任何内容。 onReceive 方法中的第一行也没有被执行。 为什么会这样?

【问题讨论】:

标签: android android-intent broadcastreceiver android-manifest intentfilter


【解决方案1】:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

你应该在 android manifest 中使用这个

【讨论】:

  • 但是为什么我的解决方案可以在 Android 3.2.2 中运行而无需添加此权限?
  • 不完全知道,但如果我们看看 android 版本 3.x.x 的百分比少于 1%。所以你可以轻松忘记它。
  • 好的@Seliv 我要试试了
【解决方案2】:

试试这个,虽然你的代码看起来不错!以下对我有用。

    <!-- Receivers -->
    <receiver android:enabled="true" android:name="host.alarmmanager.BootReceiver"
        android:permission="android.permission.RECEIVE_BOOT_COMPLETED">

        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>

【讨论】:

【解决方案3】:

从电源菜单中选择重启选项,确保您没有重启手机。

Android 奇怪地有 2 种不同的权限。

1.重启

2.开机完成

所以, 先关机,几秒后再开机!

希望对您有所帮助! (Y)

【讨论】:

    猜你喜欢
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多