如何在服务中使用广播接收器

用户名

如果该应用安装在外部存储设备上,我如何使用广播接收器并同时为它们提供服务。我对其进行了编程,但只在内部存储设备上运行,因为我希望在设备重新启动服务时运行,而不要启动活动

我的活动:

 public class FirstClass extends Activity 
 {
  public void onCreate(Bundle savedInstanceState) 
 {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.first);
    final Handler handler = new Handler();
    handler.postDelayed(new Runnable() 
    {
       public void run()
       {
        startService(new Intent(getApplicationContext(), MyService.class));
        startActivity(new Intent(FirstClass.this, MainActivity.class));
        finish();
       }
    },5000);
  }
 /////////////////////////////////////////////////
 }

我的广播接收器:

 public class BroadcastReceiverOnTurnedOn extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {
  Intent startServiceIntent = new Intent(context, MyService.class);
  context.startService(startServiceIntent);
   }
 }

我补充说:

<service
    android:name="com.dariran.MyService"
    android:enabled="true"
    android:exported="true" >
</service>
<receiver android:name="com.dariran.BroadcastReceiverOnTurnedOn"
android:enabled="true">
  <intent-filter android:priority="1">
    <action android:name="android.intent.action.BOOT_COMPLETED" /> 
  </intent-filter>
  <intent-filter>
    <action  android:name="android.intent.action.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE" />
  </intent-filter>
</receiver>

到Manifest.xml上的appliation标签上,我将此代码添加到我的服务类中,以放置一个过滤器以识别外部存储,但是不再起作用:(

 @Override
 public void onStart(Intent intent, int startId) {
 try {

 IntentFilter filter = new IntentFilter(Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE);
 filter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE);
 BroadcastReceiver mReceiver = new BroadcastReceiverOnTurnedOn();
 registerReceiver(mReceiver, filter);

 } catch (Exception e) {
 }
}
常用软件

引用文档

为了使您的应用程序始终如一地正常运行,如果使用以下任何功能,则不应允许将应用程序安装在外部存储中...

广播接收器正在侦听“启动已完成”
,系统会在将外部存储器安装到设备上之前发送ACTION_BOOT_COMPLETED广播。如果您的应用程序安装在外部存储器上,则它将永远不会收到此广播。

这次ACTION_EXTERNAL_APPLICATIONS_AVAILABLE 文档的其他地方引用

额外数据EXTRA_CHANGED_UID_LIST包含其可用性已更改的软件包的uid列表。请注意,此列表中的软件包不接收此广播。

因此,您需要将您的应用设置为不安装在外部存储上。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在服务中使用广播接收器

来自分类Dev

如何在广播接收器中启动服务?

来自分类Dev

在显示活动之前,如何在android中使用来自广播接收器的数据

来自分类Dev

如何在Xamarin.Form中使用或实现广播接收器

来自分类Dev

在显示活动之前,如何在android中使用来自广播接收器的数据

来自分类Dev

如何在广播短信接收器中使用数据库方法

来自分类Dev

广播接收器或服务?

来自分类Dev

如何在服务和广播接收器中检测关键事件

来自分类Dev

如何管理服务中的广播接收器

来自分类Dev

Android:在广播接收器中使用sharedPreferences

来自分类Dev

如何在Kotlin中使用接收器创建Lambda

来自分类Dev

如何在flutter插件中使用接收器(BroadcastReceiver)?

来自分类Dev

如何在接收器中使用<intent-filter>

来自分类Dev

引导后如何使用广播接收器自动启动服务?

来自分类Dev

如何在Android中注销广播接收器

来自分类Dev

广播接收器如何在活动之间工作?

来自分类Dev

如何在广播接收器中访问 MyViewModel(AndroidViewModel)

来自分类Dev

我的广播接收器未从本地服务接收广播

来自分类Dev

从广播接收器启动服务

来自分类Dev

如何使用广播接收器检测蓝牙状态变化?

来自分类Dev

如何在其他广播接收器之后运行广播接收器?安卓

来自分类Dev

广播接收器

来自分类Dev

如何注入广播接收器

来自分类Dev

如何从广播接收器调用GetAppContext?

来自分类Dev

使用清单注册广播接收器

来自分类Dev

使用哪种广播接收器?

来自分类Dev

尝试使用广播接收器注销

来自分类Dev

片段中的广播接收器无法从服务接收意图

来自分类Dev

我应该如何订阅广播接收器来监听位置服务的变化

Related 相关文章

热门标签

归档