2017-05-06 96 views
-5

該應用程序的目的是在電源連接或斷開連接時顯示主屏幕上的視圖,而與應用程序的運行狀態無關。即使應用程序未運行,它也應在主屏幕上顯示視圖。 問題: 1:當應用程序關閉時沒有彈出屏幕顯示。應用程序關閉時廣播接收器不工作。它在應用程序運行時工作正常

注意:它顯示應用程序運行時的彈出屏幕。

設備:棒棒糖

模式:開發模式

這裏,我已經連接的代碼。 主要的Activity類如下。它在應用程序開始時打開。

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:廣播接收器類如下所示。

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:其中在上電斷開打開或連接是如下所述的活性。

public class BatteryAdActivity extends AppCompatActivity { 

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

}

4:清單代碼如下所示。

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

您需要更具體:它的廣告網絡,例如 –

+0

@IshaanKumar應用它顯示在鎖屏谷歌的廣告就像我在附我原來的問題像電池信息的目的。我想知道如何在Android平臺上實現這一點。 (我需要涉及的步驟,特別是鎖屏上的彈出屏幕)。你可以在https://github.com/tenzinzero1/Testing找到我的源代碼。 – Tashidev

+0

在xml中執行此操作。有什麼問題? –

回答

-1

要展示廣告的聲明明確大小的空白相對佈局。 現在:

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評論你爲什麼downvoted。 –

相關問題