2012-03-06 1 views
0

バッテリー残量を示す次のサンプルコードがあります。コードを実行すると、強制終了エラーが発生します。誰でも何か考えがありますか?アンドロイドバッテリーインジケーター

public class ActActivity extends Activity { 


     private BroadcastReceiver _batteryinfo = new BroadcastReceiver() { 

      @Override 
      public void onReceive(Context context, Intent intent) { 
       int iBatLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0); 
       /*ProgressBar _batPB = (ProgressBar) findViewById(R.id.progressBar); 
       _batPB.setProgress(iBatLevel); 
       TextView _batText = (TextView) findViewById(R.id.batterylevel); 
       _batText.setText("Battery level:"+Integer.toString(iBatLevel)+"%"); 
       */ 
       Toast.makeText(context, iBatLevel, Toast.LENGTH_SHORT).show(); 

      } 
     }; 


    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     registerReceiver(_batteryinfo, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 
    } 

} 

ダイナミックレシーバーの作成には必要ない場所を読んでいますが、私のマニフェストファイルには次のものがあります。

<receiver android:name=".service.BatteryActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.BATTERY_CHANGED" /> 
     </intent-filter> 
    </receiver> 
+0

コメントの要約:ここのコードは完全に正常です。強制終了は、IDなしでTextViewによって引き起こされました。この質問の中の何かに完全に無関係なものです。私はこの質問が将来の訪問者に価値のあるものを提供するとは思わない。閉会投票。 –

答えて

0

使用このコード

this.registerReceiver(this.mBatInfoReceiver,new  
    IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 

private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context arg0, Intent intent) {   
      int level = intent.getIntExtra("level", 0);  
     } 
} 
+0

それは動作しませんでした! – jxgn

+0

これはうまくいく、私は私のアプリでこのコードを使用しています。完璧に動作します。このコードをonCreate()メソッドに追加してください。 –

0

チェック私はあなたがmenifest http://developer.android.com/reference/android/Manifest.permission.html#BATTERY_STATS

のpublic static final String型BATTERY_STATSに権限を追加する必要があると思う。このリンク 導入されたバージョン:APIレベル1

アプリケーションは、電池統計情報 定数値を収集することができます。また、「android.permission.BATTERY_STATS」

インサイドonReceiveは、バージョン< 5は、「レベル」の項目(バッテリレベル)に基づいてデータを取得し、またはBatteryManager.EXTRA_LEVELをバージョン> = 5に使用してください。

+0

ここに私はこれを追加しますか? – jxgn

+0

アプリケーションタグ終了後のmenifestで

+0

修正:アプリケーションタグの前に権限が必要です。そしてこの許可を加えた後でさえ、私はまだ強制的に近いエラーを得る!!! – jxgn