Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法在启动时启动服务_Java_Android_Boo - Fatal编程技术网

Java 无法在启动时启动服务

Java 无法在启动时启动服务,java,android,boo,Java,Android,Boo,我的应用程序有一个照相机照片备份服务。当用户打开该服务时,它会自动将sd卡照片备份到远程服务器。但当用户关闭android操作系统并再次启动时,备份服务无法再次启动 我在网上读了很多文章,我做的和他们描述的完全一样,但结果证明是错的。 也许这里的专家能帮我。请参阅下面的代码 在android manifest.xml中 这是包含启动服务错误的完整项目 我多次尝试重新启动操作系统,但没有打印任何日志!如果您有任何建议,我们将不胜感激。请尝试检查onReceive(…)中的引导已完成操作 if (I

我的应用程序有一个照相机照片备份服务。当用户打开该服务时,它会自动将sd卡照片备份到远程服务器。但当用户关闭android操作系统并再次启动时,备份服务无法再次启动

我在网上读了很多文章,我做的和他们描述的完全一样,但结果证明是错的。 也许这里的专家能帮我。请参阅下面的代码

在android manifest.xml中

这是包含启动服务错误的完整项目


我多次尝试重新启动操作系统,但没有打印任何日志!如果您有任何建议,我们将不胜感激。

请尝试检查
onReceive(…)
中的引导已完成操作

if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {

   Logs("ON Boot completed with System BroadcastReceiver");

  //do your job

 }
并在
manifest.xml

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

正确的
收件人
清单中的条目应为

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

文件osbootceiver.java中使用的包名是什么
如果包名为com.seafile.seadroid2,
**将清单中的接收人更改如下:**
我像上面那样添加,并且我正在获得引导完成广播意图。
为了测试目的,
在OnReceive方法中添加Toast消息:
公共类OSBootReceiver扩展了BroadcastReceiver{
私有静态最终字符串DEBUG_TAG=“OSBootReceiver”;
@凌驾
公共void onReceive(上下文、意图){
Toast.makeText(上下文,“引导完成”,Toast.LENGTH_SHORT).show();
Log.e(DEBUG_标记,“已接收引导完成意图”);
}
}

我根据您的描述更改了代码,结果仍然无法打印日志。@LoganGuo不不,不可能。你仍然在做一些错误…发布你的所有清单和更多的代码…@LoganGuo或者引用这个@md我已经发布了更多的代码,如果你刷新你可以查看它。在比较您提供的参考之后,我发现服务顺序和接收者标签不一样,我应该将接收者标签移到服务标签的底部吗?顺便说一句,谢谢。我的测试手机是三星P3110。这是github的完整项目:
       <intent-filter>
            <category android:name="android.intent.category.DEFAULT" />
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
<receiver android:name=".OSBootReceiver" >
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>
What is package name used in file OSBootReceiver.java

If package name is  com.seafile.seadroid2,


**change Receiver in manifest as below:**

<receiver android:name="com.seafile.seadroid2.OSBootReceiver" >
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

I added like above, and i am getting Boot completed broadcast intent.

For testing purpose, 
add Toast message in onRecieve method:


    public class OSBootReceiver extends BroadcastReceiver {
    private static final String DEBUG_TAG = "OSBootReceiver";

    @Override
    public void onReceive(Context context, Intent intent) {

    Toast.makeText(context, "boot completed", Toast.LENGTH_SHORT).show();
    Log.e(DEBUG_TAG,"boot completed intent received");
}
}