Le but de l'application est de montrer une vue sur l'écran d'accueil lorsque l'alimentation se connecter ou se déconnecter quel que soit l'état de fonctionnement de l'application. Il devrait afficher la vue sur l'écran d'accueil même si l'application n'est pas en cours d'exécution. PROBLÈME: 1: Aucun écran contextuel ne s'affiche lorsque l'application est proche.Le récepteur de diffusion ne fonctionne pas lorsque l'application est fermée. Il fonctionne parfaitement lorsque l'application est en cours d'exécution
Remarque: Il affiche un écran contextuel lorsque l'application est en cours d'exécution.
Appareil: Lollipop
mode: mode développeur
Ici, je joins le code. La classe d'activité principale est la suivante. Il s'ouvre au démarrage de l'application.
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_CODE_SOME_FEATURES_PERMISSIONS = 101;
static WindowManager.LayoutParams params;
static WindowManager wm;
static ViewGroup lockScreen;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Bundle bundle = getIntent().getExtras();
try {
String from = bundle.getString("from");
if (from.equalsIgnoreCase("broadcast")) {
startActivity(new Intent(getApplicationContext(), BatteryAdActivity.class));
finish();
}
} catch (Exception ex) {
}
getPermission();
}
private void getPermission() {
String[] PERMISSIONS = {Manifest.permission.BATTERY_STATS, Manifest.permission.SYSTEM_ALERT_WINDOW, Manifest.permission.REORDER_TASKS};
if (!hasPermissions(this, PERMISSIONS)) {
ActivityCompat.requestPermissions(this, PERMISSIONS, REQUEST_CODE_SOME_FEATURES_PERMISSIONS);
}
}
public static boolean hasPermissions(Context context, String... permissions) {
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) {
for (String permission : permissions) {
if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
}
return true;
}
}
2: La classe de récepteur est BroadCast comme ci-dessous.
public class PowerConnectionReceiver extends BroadcastReceiver {
Context context;
@Override
public void onReceive(Context context, Intent intent) {
this.context = context;
PackageManager pm = context.getPackageManager();
Intent launchIntent = pm.getLaunchIntentForPackage("com.dogpo.batteryoptimize");
launchIntent.putExtra("from", "broadcast");
context.startActivity(launchIntent);
showMessage("charging");
}
private void showMessage(String charging) {
Toast.makeText(context, charging, Toast.LENGTH_SHORT).show();
}
}
3: L'activité qui ouvre la déconnexion d'alimentation ou se connecter est comme ci-dessous.
public class BatteryAdActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_battery_ad);
}
}
4: Le code est Manifest comme ci-dessous.
<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.BATTERY_STATS" />
<uses-permission android:name="android.permission.REORDER_TASKS" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<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=".PowerConnectionReceiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
</intent-filter>
</receiver>
<activity android:name=".BatteryAdActivity"
></activity>
</application>
Vous avez besoin d'être plus précis: quel réseau publicitaire par exemple –
@IshaanKumar Le but de l'application pour afficher les informations de la batterie avec des annonces Google dans l'écran de verrouillage comme l'image i attaché à ma question initiale . Je veux savoir comment y parvenir dans la plate-forme Android. (J'ai besoin d'étapes, en particulier l'écran contextuel sur lockscreen). Vous pouvez trouver mon code source sur https://github.com/tenzinzero1/Testing. – Tashidev
Faites-le en XML. quel est le problème? –