배터리 위젯을 시험하고 있지만 설치 후 나타나지 않습니다. 이 문제에 대한 다른 게시물에서 언급 한 모든 솔루션을 시도했습니다. 매니 페스트에 더미 활동을 추가했습니다. 하지만 액티비티는 시작되지만 위젯은 표시되지 않습니다. 내가 말한 것 이외의 다른 곳으로 연결해야합니까? 여기 설치 후 위젯이 나타나지 않음
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.batteryapp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity android:name=".androidmain"
android:label="@string/app_name">
<intent-filter >
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"></category>
</intent-filter>
</activity>
<receiver android:name="BatteryWidget" >
<intent-filter>
<action android:name="android.appWidget.action.APPWIDGET_UPDATE" >
</action>
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/battery_widget_info" >
</meta-data>
</receiver>
</application>
</manifest>
는 더미 클래스 :
여기 내 매니페스트입니다. package com.example.batteryapp;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class androidmain extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
sendBroadcast(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME));
this.finish();
//setContentView(R.layout.battery_widget);
}
}
// 여기 된 .java 클래스
package com.example.batteryapp;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.Log;
import android.view.View;
import android.widget.RemoteViews;
public class BatteryWidget extends AppWidgetProvider {
private final int BATTERY_STEPS=10;
private RemoteViews widgetViews=new RemoteViews("com.example.batteryapp",R.layout.battery_widget);
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int []appWidgetIds){
//register for the receiver when the battery changes
Intent received=context.getApplicationContext().registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
String receivedAction=received.getAction();
if(receivedAction.equals(Intent.ACTION_BATTERY_CHANGED)){
//get the level amount,pass default value
int level=received.getIntExtra("level", 0);
//indicate the level amount within the text view
this.widgetViews.setTextViewText(R.id.text_level, level+"%");
Log.d("onUpdate_BW1","Before showBars()");
//call helper to show the level bars
showBars(level);
Log.d("onUpdate_BW2","After showBars()");
ComponentName appComponent=new ComponentName(context,BatteryWidget.class);
AppWidgetManager.getInstance(context).updateAppWidget(appComponent,this.widgetViews);
}
}
private void showBars(int currLevel){
if(currLevel>=10){
this.widgetViews.setImageViewResource(R.id.bar1, R.drawable.level_shape_low);
this.widgetViews.setViewVisibility(R.id.bar1,View.VISIBLE);
}
else{
this.widgetViews.setViewVisibility(R.id.bar1, View.INVISIBLE);
}
if(currLevel>=20){
this.widgetViews.setImageViewResource(R.id.bar2,R.drawable.level_shape_low);
this.widgetViews.setViewVisibility(R.id.bar2, View.VISIBLE);
}
else{
this.widgetViews.setViewVisibility(R.id.bar2, View.INVISIBLE);
}
if(currLevel>=30){
this.widgetViews.setImageViewResource(R.id.bar3,R.drawable.level_shape_low);
this.widgetViews.setViewVisibility(R.id.bar3,View.VISIBLE);
}
else{
this.widgetViews.setViewVisibility(R.id.bar3, View.INVISIBLE);
}
if(currLevel>=40){
this.widgetViews.setImageViewResource(R.id.bar4,R.drawable.level_shape_mid);
this.widgetViews.setViewVisibility(R.id.bar4,View.VISIBLE);
}
else{
this.widgetViews.setViewVisibility(R.id.bar4, View.INVISIBLE);
}
if(currLevel>=50){
this.widgetViews.setImageViewResource(R.id.bar5,R.drawable.level_shape_mid);
this.widgetViews.setViewVisibility(R.id.bar5,View.VISIBLE);
}
else{
this.widgetViews.setViewVisibility(R.id.bar5, View.INVISIBLE);
}
if(currLevel>=60){
this.widgetViews.setImageViewResource(R.id.bar6,R.drawable.level_shape_mid);
this.widgetViews.setViewVisibility(R.id.bar6,View.VISIBLE);
}
else{
this.widgetViews.setViewVisibility(R.id.bar6, View.INVISIBLE);
}
if(currLevel>=70){
this.widgetViews.setImageViewResource(R.id.bar7,R.drawable.level_shape_high);
this.widgetViews.setViewVisibility(R.id.bar7,View.VISIBLE);
}
else{
this.widgetViews.setViewVisibility(R.id.bar7, View.INVISIBLE);
}
if(currLevel>=80){
this.widgetViews.setImageViewResource(R.id.bar8,R.drawable.level_shape_high);
this.widgetViews.setViewVisibility(R.id.bar8,View.VISIBLE);
}
else{
this.widgetViews.setViewVisibility(R.id.bar8, View.INVISIBLE);
}
if(currLevel>=90){
this.widgetViews.setImageViewResource(R.id.bar9,R.drawable.level_shape_high);
this.widgetViews.setViewVisibility(R.id.bar9,View.VISIBLE);
}
else{
this.widgetViews.setViewVisibility(R.id.bar9, View.INVISIBLE);
}
if(currLevel>=100){
this.widgetViews.setImageViewResource(R.id.bar10,R.drawable.level_shape_high);
this.widgetViews.setViewVisibility(R.id.bar10,View.VISIBLE);
}
else{
this.widgetViews.setViewVisibility(R.id.bar10, View.INVISIBLE);
}
}
}
//layout/battery_widget.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/battery"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<View
android:layout_width="1dp"
android:layout_height="30dp"/>
<TextView
android:id="@+id/text_level"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/level"
android:gravity="center"
android:textSize="12sp"
android:textStyle="bold" >
</TextView>
<ImageView
android:background="@drawable/top_line"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="1dp"
android:layout_gravity="center">
</ImageView>
<ImageView
android:id="@+id/bar10"
android:layout_width="wrap_content"
android:layout_height="5dp"
android:layout_gravity="center"
android:visibility="invisible">
</ImageView>
<ImageView
android:id="@+id/bar9"
android:layout_width="wrap_content"
android:layout_height="5dp"
android:layout_gravity="center"
android:visibility="invisible">
</ImageView>
<ImageView
android:id="@+id/bar8"
android:layout_width="wrap_content"
android:layout_height="5dp"
android:layout_gravity="center"
android:visibility="invisible">
</ImageView>
<ImageView
android:id="@+id/bar7"
android:layout_width="wrap_content"
android:layout_height="5dp"
android:layout_gravity="center"
android:visibility="invisible">
</ImageView>
<ImageView
android:id="@+id/bar6"
android:layout_width="wrap_content"
android:layout_height="5dp"
android:layout_gravity="center"
android:visibility="invisible">
</ImageView>
<ImageView
android:id="@+id/bar5"
android:layout_width="wrap_content"
android:layout_height="5dp"
android:layout_gravity="center"
android:visibility="invisible">
</ImageView>
<ImageView
android:id="@+id/bar4"
android:layout_width="wrap_content"
android:layout_height="5dp"
android:layout_gravity="center"
android:visibility="invisible">
</ImageView>
<ImageView
android:id="@+id/bar3"
android:layout_width="wrap_content"
android:layout_height="5dp"
android:layout_gravity="center"
android:visibility="invisible">
</ImageView>
<ImageView
android:id="@+id/bar2"
android:layout_width="wrap_content"
android:layout_height="5dp"
android:layout_gravity="center"
android:visibility="invisible">
</ImageView>
<ImageView
android:id="@+id/bar1"
android:layout_width="wrap_content"
android:layout_height="5dp"
android:layout_gravity="center"
android:visibility="invisible">
</ImageView>
</LinearLayout>
//xml/battery_widget_info.xml
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/battery_widget"
android:minHeight="72dp"
android:minWidth="72dp"
android:updatePeriodMillis="1800000" >
</appwidget-provider>
에게 있습니다 활동은 방금 시작되었지만 위젯은 내 경우.
구현 방법을 나타내는 코드가 없으면 위젯이 작동하지 않는 이유를 알 수 없습니다. –