2017-05-06 7 views
-5

Der Zweck der App ist es, eine Ansicht auf dem Startbildschirm zu zeigen, während Stromverbindung oder Trennung unabhängig vom Laufstatus der App. Es sollte auf dem Startbildschirm angezeigt werden, auch wenn die App nicht ausgeführt wird. PROBLEM: 1: Es wird kein Popup-Bildschirm angezeigt, während die App geschlossen ist.Broadcast-Empfänger funktioniert nicht, wenn App geschlossen ist. Es funktioniert perfekt, während App ausgeführt wird

Hinweis: Es wird ein Popup-Bildschirm angezeigt, während die Anwendung ausgeführt wird.

Geräte:

Hier habe ich den Code angebracht Entwicklermodus:

Modus Lollipop. Die Hauptaktivitätsklasse ist wie folgt. Es öffnet sich beim Start der Anwendung.

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: Die Rundfunkempfänger Klasse als unten.

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: Die Aktivität, die auf Netztrenn öffnet oder eine Verbindung ist als unten.

public class BatteryAdActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_battery_ad); 
} 

}

4: Das Manifest Code ist als unten.

<?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> 

+0

Sie müssen genauer sein: das Ad-Netzwerk zum Beispiel –

+0

@IshaanKumar Des Zwecks des App es Batterieinformationen mit Google-Anzeigen in Sperrbildschirm wie das Bild zu zeigen, die ich in meiner ursprünglichen Frage angebracht . Ich möchte wissen, wie man dies in Android-Plattform erreicht. (Ich brauche Schritte, insbesondere den Popup-Bildschirm auf dem Sperrbildschirm). Sie können meinen Quellcode in https://github.com/tenzinzero1/Testing finden. – Tashidev

+0

Tun Sie es in XML. was ist das Problem? –

Antwort

-1

ein leeres Relative-Layout bestimmter Größe erklären, wo Sie die Anzeige geschaltet werden sollen. Jetzt:

RelativeLayout rl= (RelativeLayout) 
findViewById(R.id.ad_container); /*ad_container is the id of the RelativeLayout defined in XML*/ 
AdView mAdView = new AdView(this); 
mAdView.setAdUnitId(/*Banner Id*/); 
mAdView.setAdSize(AdSize.BANNER); 
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
rl.addView(mAdView,params); 
+0

Atleast Kommentar warum Sie downvoted. –

Verwandte Themen