2017-05-06 91 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。 –

相关问题