【问题标题】:Why app not launching on booting android device?为什么应用程序无法在启动 android 设备时启动?
【发布时间】:2014-02-18 21:34:14
【问题描述】:

我正在使用 Android 2.3.5 的 HTC 上测试以下应用程序。由于某种原因,应用程序在重新启动或启动手机时无法启动。

我需要知道我到底哪里错了?

BootReciever.java

     import android.os.Bundle;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.view.Menu;
import android.widget.Toast;

public class BootupReceiver extends BroadcastReceiver  {


     public void onReceive(Context context, Intent intent) {
         Toast.makeText(context, "App started", Toast.LENGTH_LONG).show();

     /*    
         Intent startActivityIntent = new Intent(context, MainActivity.class);
         startActivityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         context.startActivity(startActivityIntent);
*/

        // context.startActivity(new Intent(context, MainActivity.class));
    }

}

MainActivity.java

      import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;

import android.content.BroadcastReceiver;

import android.widget.Toast;

import android.content.Intent;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}




}

Android 清单文件:

     <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.androidbootreciever"
    android:versionCode="1"
    android:versionName="1.0" >

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

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />


   <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
       <activity
android:name="com.example.hello_android_world.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />


</intent-filter>
</activity>
<receiver android:name="com.example.androidbootreciever.BootupReceiver">
            <intent-filter>                
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.intent.action.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>
</application>

</manifest>

代码在重启时起作用,但在关机后无法打开手机。以下是我在 logcat 中收到的消息:

【问题讨论】:

    标签: android boot


    【解决方案1】:

    你用 Activity 扩展了 BootupReceiver? 它应该使用广播接收器进行扩展。

    public class BootupReceiver extends BroadcastReceiver{
    }
    

    【讨论】:

      【解决方案2】:

      您的接收方:

      public class AutoStartBroadcastReceiver extends BroadcastReceiver {
      
          @Override
          public void onReceive(Context context, Intent receivedIntent) {
              context.startActivity(new Intent(context, YourActivity.class));
          }
      }
      

      您的清单:

      <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
      
      <receiver android:name="com.example.receiver.AutoStartBroadcastReceiver" >
          <intent-filter>
              <action android:name="android.intent.action.BOOT_COMPLETED" />
          </intent-filter>
      </receiver>
      

      祝你好运!

      【讨论】:

      • 你说,你看不到 Toast。更改“context.startActivity(new Intent(context, YourActivity.class));”从我的示例到“Toast.makeText(context, "Toast", Toast.LENGTH_SHORT).show();"启动后,您应该会看到 Toast。
      • 还是不行。我已经编辑了我的源代码。请检查我的问题下发布的所有文件。
      • 我认为我的设备上没有检测到 onRecieve()。一会儿我会在这里发布 logcat 消息。
      • 您的代码应该可以工作。不能理解,为什么不。尝试在另一台设备或模拟器上启动应用程序。可能是你的 HTC 有问题。
      • 代码在 RESTART 上有效,但在关机后在 TURNING ON 手机上无效。可能是什么原因?
      【解决方案3】:

      你需要写以下权限,

      <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
      

      如果您的应用程序存储在外部存储上,那么您应该提供以下意图过滤器,

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

      App Install Location

      【讨论】:

      • 没有错误日志。为什么我没有收到 toast 消息:“应用程序已启动”?
      • @MuhammadMaqsoodurRehman 您是否将BootupReceiver 类更改为扩展BroadcastReceiver
      • 还是不行。我已经编辑了我的源代码。请检查我的问题下发布的所有文件。
      猜你喜欢
      • 2015-10-28
      • 1970-01-01
      • 1970-01-01
      • 2020-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多