0

I am using on receive() to receive broadcast and launch another application(by intent). Whenever the app(wifimann) receives the broadcast, the other app (called kotkot(written in Kotlin)) doesn't launch from initial app despite the Wi-Fi being connected. My code is as follows:

  • MainActivity:

    package com.wifi.wifimann;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.net.ConnectivityManager;
    import android.net.NetworkCapabilities;
    import android.net.NetworkInfo;
    import android.os.Bundle;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
    }
    
  • ConnectivityReciever.java:

    package com.wifi.wifimann;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.net.ConnectivityManager;
    import android.net.NetworkCapabilities;
    
    import com.wifi.wifimann.MainActivity;
    
    public class ConnectivityReceiver extends BroadcastReceiver {
    
        @Override
        public void onReceive(Context context, Intent intent) {
    
            ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkCapabilities networkAgent = connMgr.getNetworkCapabilities(connMgr.getActiveNetwork());
    //        NetworkInfo wifi = networkAgent.hasTransport(NetworkCapabilities.TRANSPORT_WIFI);
            if (networkAgent.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)){
                Intent launchIntent = context.getPackageManager().getLaunchIntentForPackage("com.example.kotkot");
                if (launchIntent != null) {
                    context.startActivity(launchIntent);//null pointer check in case package name was not found
                }
            }
    
        }
    }
    
    • AndroidManifest.xml
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.wifi.wifimann">
        <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
        <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=".MyBroadcastReceiver"  android:exported="true">
                <intent-filter>
                    <action android:name="android.intent.action.BOOT_COMPLETED"/>
                    <action android:name="android.intent.action.INPUT_METHOD_CHANGED" />
                </intent-filter>
            </receiver>
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>
    

It also says that MyBroadcastReceiver is unresolved. But my build.gradle has the same pkg name("com.wifi.wifimann") as its application ID.

  • kotkot:

    • MainActivity:
    
    import androidx.appcompat.app.AppCompatActivity
    import android.os.Bundle
    import android.widget.TextView
    import androidx.core.content.ContextCompat.startActivity
    import android.content.Intent
    import android.net.ConnectivityManager
    import android.net.NetworkInfo
    import android.content.Context.CONNECTIVITY_SERVICE
    import androidx.core.content.ContextCompat.getSystemService
    import android.content.BroadcastReceiver
    import android.content.Context
    import android.net.NetworkCapabilities
    import android.os.Build
    import androidx.core.content.ContextCompat.getSystemService
    
    
    class MainActivity : AppCompatActivity() {
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
            val welcome_greeting: TextView = findViewById(R.id.welcome_greeting)
            welcome_greeting.setText("kotleenhere!!")
        }
    }
    

0 Answers0