SLaks 2013-09-24 08:32 采纳率: 0%
浏览 998

开启设备时,启动程序的问题

下面的代码是当开启设备时,启动程序:

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);
    }
}

在Manifest (as 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 中运行时,broadcast 接受器不能接受到任何东西,而且 onReceive 方法中的第一行也没有执行。这是什么错误啊?

  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-02-19 22:29
    关注

    该回答引用ChatGPT

    在 Android 3.2.2 中,您的代码可以正常工作,但在 Android 4.0.3 中无法正常工作。这可能是由于 Android 4.0.3 中引入了一些更严格的安全限制所致,这些限制可以阻止您的应用程序在设备启动时运行。


    为了解决这个问题,您可以尝试以下方法:

    • 确保您的应用程序已经被安装并在设备上运行过,否则您的 broadcast 接收器将不会收到任何东西。

    • 检查您的应用程序是否拥有 "android.permission.RECEIVE_BOOT_COMPLETED" 权限,如果没有,请添加它。

    • 检查您的 broadcast 接收器是否被正确注册在您的 AndroidManifest.xml 文件中,并且它的 intent-filter 中包含了 "android.intent.action.BOOT_COMPLETED" 操作。

    • 尝试在 onReceive() 方法中添加一些日志,以便更好地理解程序的执行情况,比如您可以在 onReceive() 方法中添加一个日志语句,以确保代码已经执行。

    如果这些方法都没有解决您的问题,请尝试使用 adb logcat 命令获取设备日志,并查找与您的应用程序相关的日志,以查找更多的信息和提示。

    评论

报告相同问题?

悬赏问题

  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算