Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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 当手机连接到电源时启动android应用程序_Java_Android_Kotlin - Fatal编程技术网

Java 当手机连接到电源时启动android应用程序

Java 当手机连接到电源时启动android应用程序,java,android,kotlin,Java,Android,Kotlin,我正在尝试编写一个android应用程序,只要带有该应用程序的手机插入交流电源或通过usb线连接到笔记本电脑,就应该启动该应用程序。我想要的行为是,即使android应用程序关闭,一旦我将手机插入电源,应用程序也应该启动并开始查看 我在AndroidManifest.xml文件中添加了以下内容 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/ap

我正在尝试编写一个android应用程序,只要带有该应用程序的手机插入交流电源或通过usb线连接到笔记本电脑,就应该启动该应用程序。我想要的行为是,即使android应用程序关闭,一旦我将手机插入电源,应用程序也应该启动并开始查看

我在AndroidManifest.xml文件中添加了以下内容

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

    <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">

        <receiver android:name=".OnPowerReceiver">
            <intent-filter>
                <action 
         android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
            </intent-filter>
        </receiver>

        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
然而,当我运行并将设备连接到电源时,android应用程序没有启动(启动)。我更愿意使用颤振来编写此解决方案,但我了解到颤振可能不是与手机硬件进行这种级别交互的有力候选者。
请问我做错了什么?任何帮助都将不胜感激。谢谢

我想android.intent.action.action\u POWER\u CONNECTED不会被排除在后台广播列表之外


必须从Java代码中显式注册它才能使其正常工作。

作为安卓8.0(API级别26)后台执行限制的一部分,针对API级别26或更高的应用程序不能再为其清单中的隐式广播注册广播接收器。然而,一些广播目前不受这些限制。无论应用程序的目标API级别如何,应用程序都可以继续为以下广播注册侦听器

有关您的广播,请参阅以下文档-

您可以按如下方式注册-

private BroadcastReceiver receiver;

protected void onResume() {
 super.onResume();



  IntentFilter filter = new IntentFilter();
  filter.addAction("android.intent.action.ACTION_POWER_CONNECTED");


  receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {

    }
  };
     registerReceiver(receiver, filter);
}
以及注销—

 @Override
 protected void onDestroy() {
  if (receiver != null) {
   unregisterReceiver(receiver);
   receiver = null;
  }
  super.onDestroy();
 }

谢谢你的回复。我按照您提供的链接观看了以下广播:连接了操作U USB\u附件,分离了操作U USB\u附件,连接了操作U USB\u设备,分离了操作U USB\u设备。我试着轮流使用它们,但都不起作用。这是否意味着我想做的事在Android中是不可能的?还是有更好的方法?感谢您必须从Java代码中显式注册它。那么它应该可以工作了。你能给我一个这样性质的java代码片段吗?再次感谢
 @Override
 protected void onDestroy() {
  if (receiver != null) {
   unregisterReceiver(receiver);
   receiver = null;
  }
  super.onDestroy();
 }