Widget erstellen

  • Antworten:1
Daniel online
  • Forum-Beiträge: 282

05.05.2011, 16:25:34 via Website

Hey,

ich möchte gern ein Widget für mein App erstellen.
In meiner App kann ich das Handy per Button Stumm schalten.

Das Widget soll nur ein Button sein, welcher bei Klick das Handy ebenfalls Stumm schaltet.

Das Widget ist soweit schon auf dem Bildschirm zu sehen, doch tut halt noch nichts.

Gruß

Edit:
Ich hock hier jetzt echt shcon ewig drann, bekomme es aber leider einfach nicht hin -.-
ich poste jetzt hier mal den Code. Ich hoffe mir kann dann jmd helfen :)

Startseite:(MainActivity)
1package de.Daniel.Projekt2;
2
3import android.app.Activity;
4import android.content.Context;
5import android.media.AudioManager;
6import android.net.ConnectivityManager;
7import android.net.wifi.WifiManager;
8import android.os.Bundle;
9import android.view.View;
10import android.view.View.OnClickListener;
11import android.widget.Button;
12import android.widget.TextView;
13import android.widget.Toast;
14
15
16
17public class Startseite extends Activity implements OnClickListener {
18 /** Called when the activity is first created. */
19 AudioManager mgr=null;
20 WifiManager wifi=null;
21 ConnectivityManager cm = null;
22 @Override
23 public void onCreate(Bundle savedInstanceState) {
24 super.onCreate(savedInstanceState);
25 setContentView(R.layout.startseite);
26
27 //Click-listener
28 Button b1 = (Button)findViewById(R.id.main_b1);
29 b1.setOnClickListener(this);
30 Button b2 = (Button)findViewById(R.id.main_b2);
31 b2.setOnClickListener(this);
32 Button b3 = (Button)findViewById(R.id.main_b3);
33 b3.setOnClickListener(this);
34 Button b4 = (Button)findViewById(R.id.main_b4);
35 b4.setOnClickListener(this);
36
37 mgr = (AudioManager)getSystemService(Context.AUDIO_SERVICE); // Für Button1 einen AudioManager
38 wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE); //Für Button2 einen WifiManager
39 cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); //button3 to handle mobile internet
40 //Text zuordnen
41 if(mgr.getRingerMode()==0) b1.setText("Klingeltonlautstärke ist aus.");
42 else b1.setText("Klingeltonlautstärke ist ein.");
43 if(wifi.isWifiEnabled()==true) b2.setText("Wlan ist eingeschaltet.");
44 else b2.setText("Wlan ist eingeschaltet.");
45 }
46
47
48 @Override
49 public void onClick(View v)
50 {
51 switch( v.getId())
52 {
53 case R.id.main_b1: //B1 Ton an/aus. An auf ursprünglichen Wert wäre ncoh schön.
54 {
55 if(mgr.getRingerMode()>0)
56 {
57 Toast.makeText(this, "Silence", 1000).show();
58 mgr.setRingerMode(0);
59 ((TextView) v).setText("Klingeltonlautstärke ist aus.");
60
61 }
62 else
63 {
64
65 mgr.setRingerMode(10);
66 Toast.makeText(this, ""+mgr.getRingerMode(), 1000).show();
67 ((TextView) v).setText("Klingeltonlautstärke ist an.");
68 }
69
70 break;
71 }
72
73 case R.id.main_b2://Button2: Wlan an/aus schalten
74 {
75
76 if(wifi.isWifiEnabled()==true)
77 {
78 Toast.makeText(this, "Wlan wird deaktiviert.", 1000).show();
79 wifi.setWifiEnabled(false);
80 ((TextView) v).setText("Wlan ist ausgeschaltet.");
81 }
82 else
83 {
84 Toast.makeText(this, "Wlan wird aktiviert.", 1000).show();
85 wifi.setWifiEnabled(true);
86 ((TextView) v).setText("Wlan ist eingeschaltet.");
87 }
88 break;
89 }
90 case R.id.main_b3: //Button3: mobiles Internet ein/aus schalten.
91 {
92 // if(cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState()==0)
93 }
94 }
95
96
97 }
98
99}

widgetProvider:

[code]

package de.Daniel.Projekt2;


import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.widget.RemoteViews;




public class widgetProvider1 extends AppWidgetProvider
{


private static final String ACTION_WIDGET_RECEIVER = "ActionRecieverWidget";
public void onUpdadte(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
{

final int N = appWidgetIds.length;

// Perform this loop procedure for each App Widget that belongs to this provider
for (int i=0; i<N; i++)
{

int appWidgetId = appWidgetIds[i];

Intent intent = new Intent(context, widgetProvider1.class);

PendingIntent pendingIntent = PendingIntent.getActivity(context,0, intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
intent.setAction(ACTION_WIDGET_RECEIVER);
views.setOnClickPendingIntent(R.id.widget_button, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}

@Override

public void onReceive(Context context, Intent intent)
{
RemoteViews views = new RemoteViews("de.Daniel.Projekt2", R.id.widget_button);
if (intent.getAction().equals(ACTION_WIDGET_RECEIVER))
{

views.setTextColor(R.id.widget_button, 0xff000000);
views.setTextViewText(R.id.widget_button, "Es geht!!");
}
else views.setTextViewText(R.id.widget_button, "Es geht nicht!!");

super.onReceive(context, intent);
}
}
[/code]

widgetInfo
1<?xml version="1.0" encoding="utf-8"?>
2<appwidget-provider
3 xmlns:android="http://schemas.android.com/apk/res/android"
4 android:minHeight="72dp"
5 android:minWidth="72dp"
6 android:id="@+id/widget"
7 android:updatePeriodMillis="5000"
8 android:initialLayout="@layout/widget_layout"
9
10</appwidget-provider>

widget Layout
1<?xml version="1.0" encoding="utf-8"?>
2<LinearLayout
3 xmlns:android="http://schemas.android.com/apk/res/android"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent">
6
7 <Button
8 android:id="@+id/widget_button"
9 android:text="@string/widget_text"
10 android:layout_height="match_parent"
11 android:layout_width="match_parent"
12 ></Button>
13</LinearLayout>
14
15Manifest:
16
1<?xml version="1.0" encoding="utf-8"?>
2<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="de.Daniel.Projekt2"
4 android:versionCode="1"
5 android:versionName="1.0">
6<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
7<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
8
9
10 <application android:icon="@drawable/icon" android:label="@string/app_name">
11 <activity android:name=".Startseite"
12 android:label="@string/app_name">
13 <intent-filter>
14 <action android:name="android.intent.action.MAIN" />
15 <category android:name="android.intent.category.LAUNCHER" />
16 </intent-filter>
17 </activity>
18 <receiver android:name="widgetProvider1" >
19 <intent-filter>
20 <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
21 <action android:name="de.thesmile.android.widget.buttons.ButtonWidget.ACTION"></action>
22 </intent-filter>
23 <meta-data android:name="android.appwidget.provider"
24 android:resource="@xml/widget_info" />
25 </receiver>
26
27
28 </application>
29</manifest>



Ich will das ich auf das Widget klick und er dann z.B. den Text ändert.

— geändert am 08.05.2011, 11:32:26

Antworten
Daniel online
  • Forum-Beiträge: 282

08.05.2011, 11:33:42 via Website

So ich hab mal den Quelltext angehänt.
Ich hoffe jetzt kann mir einer helfen.
Danke schonmal!:)

Antworten