简体   繁体   English

广播接收器在 Android 中不起作用

[英]Broadcast Reciever not working in Android

Activities:活动:

  • MainActivity (Splash Screen) MainActivity(启动画面)
  • MainActivity2 (Login) MainActivity2(登录)
  • SignupActivity (Signup)注册活动(注册)
  • MainActivity3 (Registering details) MainActivity3(注册详情)
  • ChatActivity (Hide on quiting from here) ChatActivity(从这里退出时隐藏)

Basically what i am trying to accomplish ii wanna hide my app after i do the initial signup part which will be handled uptill MainActivity3 and then when the user quits from the app the app icon should disappear and must only appear when called from dialer.基本上我想要完成的事情是在我完成初始注册部分之后隐藏我的应用程序,该部分将在 MainActivity3 之前处理,然后当用户退出应用程序时,应用程序图标应该消失,并且只能在从拨号器调用时出现。 My BroadcastReciever class never gets triggered,I am unable to figure out where i am going wrong Thanks in advance.我的 BroadcastReciever class 永远不会被触发,我无法弄清楚我哪里出错了提前谢谢。

BroadCastReceiver.class BroadCastReceiver.class

package com.insignia.socialmediasim;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.util.Log;
public class MyBroadCastReciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    String ourCode = "**1234";
    String dialedNumber = getResultData();

    Log.d("triggered", "onReceive: "+dialedNumber);
    if ((dialedNumber.equals(ourCode))){
        // My app will bring up, so cancel the dialer broadcast
        setResultData(null);
        PackageManager packageManager = context.getPackageManager();
        ComponentName componentName = new ComponentName(context, com.insignia.socialmediasim.MainActivity.class);
        packageManager.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

        //Intent to launch MainActivity
        Intent intent_to_mainActivity = new Intent(context, MainActivity.class);
        context.startActivity(intent_to_mainActivity);
    }
}}

ChatActivity.class, "This is the class in which i hide my app" ChatActivity.class,“这是我隐藏我的应用程序的 class”

package com.insignia.socialmediasim;
import androidx.appcompat.app.AppCompatActivity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Toast;

public class ChatActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_chat);
    Intent intent = getIntent();
    Toast.makeText(ChatActivity.this, "Welcome Back to the adobe " + intent.getStringExtra("type"), Toast.LENGTH_LONG).show();

}


@Override
protected void onStop() {
    super.onStop();
    PackageManager packageManager = getPackageManager();
    ComponentName componentName = new ComponentName(ChatActivity.this, com.insignia.socialmediasim.MainActivity.class);
    packageManager.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
}}

AndroidManifest.XML AndroidManifest.XML

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

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

<application
    android:allowBackup="true"
    android:icon="@mipmap/asd"
    android:label="@string/appnameda"
    android:roundIcon="@mipmap/asd"
    android:supportsRtl="true"
    android:theme="@style/Theme.Design.NoActionBar">
    <activity android:name=".ChatActivity" />
    <activity android:name=".MainActivity3" />
    <activity android:name=".SignupActivity" />
    <activity android:name=".MainActivity2" />
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <receiver android:name=".MyBroadCastReciever">
        <intent-filter>
            <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
        </intent-filter>
    </receiver>


</application>

It is recommended that register and unregister the broadcast programmatically in you activity.Try It.建议在您的活动中以编程方式注册和取消注册广播。试试吧。 this is a sample code for registering a broadcastReceiver:这是注册 broadcastReceiver 的示例代码:

IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);
this.registerReceiver(br, filter);

You can check more information from this document: broadcasts您可以从本文档中查看更多信息: 广播

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM