2012-02-10 126 views
0

我在我的应用程序中创建了一个通知,以显示电池电量百分比。我的清单文件是广播不更新电池更换值

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.create.bg" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk android:minSdkVersion="8" /> 
<uses-permission android:name="android.permission.BATTERY_STATS"/> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:label="@string/app_name" 
     android:name=".CreateBgActivity" > 
     <intent-filter > 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <receiver android:name=".BatteryReceive" > 
     <intent-filter> 

      <action android:name="android.intent.action.BATTERY_CHANGED"></action> 
     </intent-filter> 
    </receiver> 
</application> 

我创建的扩展广播接收器接收电池电量和状态栏通知一个单独的类。我的代码是:

public class BatteryReceive extends BroadcastReceiver { 
private String bat = "android.intent.action.BATTERY_CHANGED"; 

@Override 
public void onReceive(Context context, Intent intent) { 
    //Log.d("Battery Level", ""+intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1)); 
    if(intent.getAction().equals(bat)) { 
    Toast.makeText(context, "Battery Level"+intent.getIntExtra("level", 0), Toast.LENGTH_SHORT).show(); 
    NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
    final Notification notifyDetails = new Notification(R.drawable.ic_launcher,""+intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1),System.currentTimeMillis()); 
    //notifyDetails.flags = Notification.FLAG_AUTO_CANCEL; 


    notifyDetails.setLatestEventInfo(context, "Batter Level", ""+intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1), null); 
    mNotificationManager.notify(1, notifyDetails); 
    } 
} 

} 

我便无法得到任何通知或日志输出的电量:(它是什么错我的代码有一个人帮我出这个

+0

这是电池的Widget http://code.google.com/p/batterywidget/source/checkout – Rishi 2012-02-10 13:08:20

+0

@Rishi的完整源代码,我已经看到了一个。我在我的代码中实现了同样的事情,但它不起作用。 – 2012-02-10 13:13:42

+0

请参阅下面的classhttp://code.google.com/p/batterywidget/source/browse/trunk/a_batterywidget/src/com/geekyouup/android/widgets/battery/BatteryWidget.java R = 5在远程视窗构建更新你得到你的电池电量 – Rishi 2012-02-11 04:58:09

回答

0

@覆盖 公共无效的onReceive(上下文语境,意图意图){

//Log.d("Battery Level", ""+intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1)); 

if(intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)) { 
    // This is called when Your battery is changed 

} 

}

+0

我也试过这个。当我第一次运行它时,它会给出电池电量。它稍后不会给它。 – 2012-02-11 07:10:30

+0

检查此答案:http://stackoverflow.com/questions/11277302/i-cant-receive-broadcast-on-battery-state-change – benchuk 2015-04-29 10:30:18

0

更改:

if(intent.getAction().equals(bat)) 

要:

if(intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)) 
+0

我用你的答案也。但我没有电池电量。 – 2012-02-11 05:14:00