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!!") } }