Browse Source

- Add support for Update the uptime with a button

- Fix a bug where the client wouldn't update the uptime at the server
- Languages updates
Carlos Mogas da Silva 8 years ago
parent
commit
11b7e2e339

+ 31
- 21
AndroidManifest.xml View File

@@ -1,31 +1,41 @@
1 1
 <?xml version="1.0" encoding="utf-8"?>
2 2
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3
-      package="org.r3pek.droiduptime"
4
-      android:versionCode="8" android:versionName="1.3.2">
5
-    <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="false">
3
+	package="org.r3pek.droiduptime" android:versionCode="8"
4
+	android:versionName="1.3.2">
5
+	<application android:icon="@drawable/icon" android:label="@string/app_name"
6
+		android:debuggable="false">
6 7
 
7 8
 
8
-    <service android:name="DroidUptimeService"></service>
9
-<receiver android:name="DroidUptimeServiceManager">
10
-	<intent-filter>
11
-		<action android:name="android.intent.action.BOOT_COMPLETED"></action>
12
-	</intent-filter>
13
-</receiver>
14
-<activity android:name="Main" android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN"></action>
15
-<category android:name="android.intent.category.LAUNCHER"></category>
16
-</intent-filter>
17
-</activity>
18
- <meta-data android:value="a14bad01161834d" android:name="ADMOB_PUBLISHER_ID" />
19
-<activity android:name="MyPreferences"></activity>
20
-</application>
21
-    <uses-sdk android:minSdkVersion="3"/>
9
+		<service android:name="DroidUptimeService"></service>
10
+		<receiver android:name="DroidUptimeServiceManager">
11
+			<intent-filter>
12
+				<action android:name="android.intent.action.BOOT_COMPLETED"></action>
13
+			</intent-filter>
14
+		</receiver>
15
+		<activity android:name="Main" android:label="@string/app_name">
16
+			<intent-filter>
17
+				<action android:name="android.intent.action.MAIN"></action>
18
+				<category android:name="android.intent.category.LAUNCHER"></category>
19
+			</intent-filter>
20
+		</activity>
21
+		<meta-data android:value="a14bad01161834d" android:name="ADMOB_PUBLISHER_ID" />
22
+		<activity android:name="MyPreferences"></activity>
23
+	</application>
24
+	<uses-sdk android:minSdkVersion="3" />
22 25
 
23
-<supports-screens android:resizeable="true" android:largeScreens="true" android:anyDensity="false" android:normalScreens="true" android:smallScreens="true"></supports-screens>
26
+	<supports-screens android:resizeable="true"
27
+		android:largeScreens="true" android:anyDensity="false"
28
+		android:normalScreens="true" android:smallScreens="true"></supports-screens>
24 29
 
25 30
 
26
-<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
31
+	<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
32
+	<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
27 33
 
28
-<uses-permission android:name="android.permission.INTERNET"></uses-permission>
34
+	<uses-permission android:name="android.permission.INTERNET"></uses-permission>
29 35
 
30
-<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
36
+	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
37
+	<permission android:name="org.r3pek.droiduptime.permission.FORCE_UPDATE"
38
+		android:protectionLevel="normal" android:label="@string/perm_allow_update_label"
39
+		android:description="@string/perm_allow_update_desc"></permission>
40
+	<uses-permission android:name="org.r3pek.droiduptime.permission.FORCE_UPDATE"></uses-permission>
31 41
 </manifest> 

+ 73
- 28
res/layout/main.xml View File

@@ -1,38 +1,83 @@
1 1
 <?xml version="1.0" encoding="utf-8"?>
2
-<ScrollView
3
-	xmlns:android="http://schemas.android.com/apk/res/android"
2
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
4 3
 	xmlns:myapp="http://schemas.android.com/apk/res/org.r3pek.droiduptime"
5
-	android:id="@+id/ScrollView01" 
6
-	android:layout_width="fill_parent" 
7
-	android:layout_height="fill_parent">
8
-<LinearLayout 
9
-    android:orientation="vertical"
10
-    android:layout_width="fill_parent"
11
-    android:layout_height="fill_parent">
4
+	android:layout_width="fill_parent" android:layout_height="fill_parent">
5
+	<ScrollView android:id="@+id/ScrollView01"
6
+		android:layout_width="fill_parent" android:layout_height="fill_parent">
7
+		<LinearLayout android:orientation="vertical"
8
+			android:layout_width="fill_parent" android:layout_height="fill_parent">
12 9
 
13 10
 
14 11
 
15
-<com.admob.android.ads.AdView android:layout_gravity="bottom" android:id="@+id/ad" android:layout_width="fill_parent" android:layout_alignParentBottom="true" myapp:backgroundColor="#000000" myapp:primaryTextColor="#FFFFFF" myapp:secondaryTextColor="#CCCCCC" android:layout_height="wrap_content" />
16
-<ImageView android:id="@+id/ImageView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/droiduptime" android:layout_gravity="center_horizontal" android:layout_marginTop="20dip"></ImageView>
12
+			<ImageView android:id="@+id/ImageView01"
13
+				android:layout_width="wrap_content" android:layout_height="wrap_content"
14
+				android:src="@drawable/droiduptime" android:layout_gravity="center_horizontal"
15
+				android:layout_marginTop="20dip"></ImageView>
16
+
17
+			<TableLayout android:id="@+id/TableLayout01"
18
+				android:layout_height="wrap_content" android:layout_width="fill_parent"
19
+				android:stretchColumns="1" android:paddingTop="20dip">
20
+				<TableRow android:id="@+id/TableRow01"
21
+					android:layout_width="wrap_content" android:layout_height="wrap_content">
22
+					<LinearLayout android:id="@+id/LinearLayout01"
23
+						android:layout_height="wrap_content" android:orientation="horizontal"
24
+						android:layout_width="fill_parent">
25
+						<TextView android:id="@+id/TextView01"
26
+							android:layout_width="wrap_content" android:layout_height="wrap_content"
27
+							android:textStyle="bold" android:layout_marginTop="15dip"
28
+							android:text="@string/servicestatus"></TextView>
29
+						<TextView android:layout_width="wrap_content"
30
+							android:layout_height="wrap_content" android:layout_marginLeft="20dip"
31
+							android:id="@+id/tvStatus" android:layout_marginTop="15dip"></TextView>
32
+					</LinearLayout>
33
+					<Button android:layout_width="wrap_content"
34
+						android:layout_height="wrap_content" android:id="@+id/btnStartStopService"
35
+						android:layout_gravity="right"></Button>
36
+				</TableRow>
37
+			</TableLayout>
17 38
 
18
-<TableLayout android:id="@+id/TableLayout01" android:layout_height="wrap_content" android:layout_width="fill_parent" android:stretchColumns="1" android:paddingTop="20dip">
19
-	<TableRow android:id="@+id/TableRow01" android:layout_width="wrap_content" android:layout_height="wrap_content">
20
-		<LinearLayout android:id="@+id/LinearLayout01" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_width="fill_parent">
21
-			<TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold" android:layout_marginTop="15dip" android:text="@string/servicestatus"></TextView>
22
-			<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dip" android:id="@+id/tvStatus" android:layout_marginTop="15dip"></TextView>
23
-		</LinearLayout>
24
-		<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/btnStartStopService" android:layout_gravity="right"></Button>
25
-	</TableRow>
26
-</TableLayout>
27 39
 
40
+			<LinearLayout android:id="@+id/LinearLayout02"
41
+				android:layout_width="wrap_content" android:layout_height="wrap_content"
42
+				android:orientation="horizontal" android:paddingTop="10dip">
43
+				<TextView android:id="@+id/TextView02"
44
+					android:layout_width="wrap_content" android:layout_height="wrap_content"
45
+					android:textStyle="bold" android:text="@string/uptime"></TextView>
46
+				<TextView android:layout_width="wrap_content"
47
+					android:layout_height="wrap_content" android:layout_marginLeft="20dip"
48
+					android:id="@+id/tvUptime"></TextView>
49
+			</LinearLayout>
28 50
 
29
-<LinearLayout android:id="@+id/LinearLayout02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingTop="10dip"><TextView android:id="@+id/TextView02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold" android:text="@string/uptime"></TextView>
30
-<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dip" android:id="@+id/tvUptime"></TextView>
31
-</LinearLayout>
32
-<LinearLayout android:id="@+id/LinearLayout05" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="15dip"><TextView android:id="@+id/TextView06" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold" android:text="@string/lastupdate"></TextView>
33
-<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dip" android:id="@+id/tvLastUpdate"></TextView>
34
-</LinearLayout><TextView android:id="@+id/TextView03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="15dip" android:linksClickable="true" android:autoLink="web" android:text="@string/message"></TextView>
51
+			<TableLayout android:id="@+id/TableLayout02"
52
+				android:layout_height="wrap_content" android:layout_width="fill_parent"
53
+				android:stretchColumns="1" android:paddingTop="20dip">
54
+				<TableRow android:id="@+id/TableRow02"
55
+					android:layout_width="wrap_content" android:layout_height="wrap_content">
56
+					<LinearLayout android:id="@+id/LinearLayout05"
57
+						android:layout_width="wrap_content" android:layout_height="wrap_content"
58
+						android:orientation="horizontal" android:layout_marginTop="15dip">
59
+						<TextView android:id="@+id/TextView06"
60
+							android:layout_width="wrap_content" android:layout_height="wrap_content"
61
+							android:textStyle="bold" android:text="@string/lastupdate"></TextView>
62
+						<TextView android:layout_width="wrap_content"
63
+							android:layout_height="wrap_content" android:layout_marginLeft="20dip"
64
+							android:id="@+id/tvLastUpdate"></TextView>
65
+					</LinearLayout>
66
+					<Button android:layout_width="wrap_content"
67
+						android:layout_height="wrap_content" android:id="@+id/btnUpdate"
68
+						android:text="@string/update" android:layout_gravity="right"></Button>
69
+				</TableRow>
70
+			</TableLayout>
71
+			<TextView android:id="@+id/TextView03" android:layout_width="wrap_content"
72
+				android:layout_height="wrap_content" android:layout_marginTop="15dip"
73
+				android:linksClickable="true" android:autoLink="web" android:text="@string/message"></TextView>
35 74
 
36 75
 
37
-</LinearLayout>
38
-</ScrollView>
76
+		</LinearLayout>
77
+	</ScrollView>
78
+	<com.admob.android.ads.AdView
79
+		android:layout_gravity="bottom" android:id="@+id/ad"
80
+		android:layout_width="fill_parent" android:layout_alignParentBottom="true"
81
+		myapp:backgroundColor="#000000" myapp:primaryTextColor="#FFFFFF"
82
+		myapp:secondaryTextColor="#CCCCCC" android:layout_height="wrap_content" />
83
+</RelativeLayout>

+ 5
- 2
res/values-pt/strings.xml View File

@@ -41,6 +41,9 @@
41 41
 		<item>7200</item>
42 42
 	</string-array>
43 43
 	<string name="no_user_pass">Insira o utilizador e a senha no menu configuração</string>
44
-	<string name="pref_gen_hostname">Hostname</string>
45
-	<string name="pref_gen_hostname_desc">Hostname a reportar para o Uptime Project</string>
44
+	<string name="pref_gen_hostname">Nome do telefone</string>
45
+	<string name="pref_gen_hostname_desc">Nome do telefone a reportar para o Uptime Project</string>
46
+	<string name="perm_allow_update_label">Força uma actualização do Uptime no site</string>
47
+	<string name="perm_allow_update_desc">Permite que uma aplicação submita o uptime corrente para o site uptimeprj.com</string>
48
+	<string name="update">Actualizar</string>
46 49
 </resources>

+ 5
- 2
res/values-zh-rCN/strings.xml View File

@@ -41,6 +41,9 @@
41 41
 		<item>7200</item>
42 42
 	</string-array>
43 43
 	<string name="no_user_pass">请设定用户名和密码</string>
44
-	<string name="pref_gen_hostname">主机名</string>
45
-	<string name="pref_gen_hostname_desc">主机名发送到 Uptime 项目</string>
44
+	<string name="pref_gen_hostname">电话名称</string>
45
+	<string name="pref_gen_hostname_desc">手机名称发送到系统正常运行时间</string>
46
+	<string name="perm_allow_update_label">强制提交系统正常运行时间</string>
47
+	<string name="perm_allow_update_desc">允许任何应用程序强制提交系统正常运行时间执行时间到 uptimeprj.com 网站</string>
48
+	<string name="update">更新</string>
46 49
 </resources>

+ 5
- 2
res/values-zh-rTW/strings.xml View File

@@ -41,6 +41,9 @@
41 41
 		<item>7200</item>
42 42
 	</string-array>
43 43
 	<string name="no_user_pass">請設定使用者名稱和密碼</string>
44
-	<string name="pref_gen_hostname">主機名</string>
45
-	<string name="pref_gen_hostname_desc">主機名發送到 Uptime 項目</string>
44
+	<string name="pref_gen_hostname">電話名稱</string>
45
+	<string name="pref_gen_hostname_desc">手機名稱發送到系統正常執行時間</string>
46
+	<string name="perm_allow_update_label">強制提交系統正常執行時間</string>
47
+	<string name="perm_allow_update_desc">允許任何套用程式強制提交系統正常執行時間執行時間到 uptimeprj.com 網站</string>
48
+	<string name="update">更新</string>
46 49
 </resources>

+ 5
- 2
res/values/strings.xml View File

@@ -41,6 +41,9 @@
41 41
 		<item>7200</item>
42 42
 	</string-array>
43 43
 	<string name="no_user_pass">Please setup Username and Password</string>
44
-	<string name="pref_gen_hostname">Hostname</string>
45
-	<string name="pref_gen_hostname_desc">Hostname to send to the Uptime Project</string>
44
+	<string name="pref_gen_hostname">Phone Name</string>
45
+	<string name="pref_gen_hostname_desc">Phone Name to send to the Uptime Project</string>
46
+	<string name="perm_allow_update_label">Force an uptime submission</string>
47
+	<string name="perm_allow_update_desc">Allows any application to force the current uptime to be submitted to the uptimeprj.com site</string>
48
+	<string name="update">Update</string>
46 49
 </resources>

+ 40
- 28
src/org/r3pek/droiduptime/DroidUptimeService.java View File

@@ -1,15 +1,5 @@
1 1
 package org.r3pek.droiduptime;
2 2
 
3
-import java.io.BufferedReader;
4
-import java.io.FileReader;
5
-import java.io.IOException;
6
-import java.util.ArrayList;
7
-import java.util.List;
8
-import java.util.Timer;
9
-import java.util.TimerTask;
10
-import java.util.regex.Matcher;
11
-import java.util.regex.Pattern;
12
-
13 3
 import org.apache.http.NameValuePair;
14 4
 import org.apache.http.client.entity.UrlEncodedFormEntity;
15 5
 import org.apache.http.client.methods.HttpPost;
@@ -18,7 +8,10 @@ import org.apache.http.message.BasicNameValuePair;
18 8
 import org.apache.http.protocol.HTTP;
19 9
 
20 10
 import android.app.Service;
11
+import android.content.BroadcastReceiver;
12
+import android.content.Context;
21 13
 import android.content.Intent;
14
+import android.content.IntentFilter;
22 15
 import android.net.ConnectivityManager;
23 16
 import android.net.wifi.WifiInfo;
24 17
 import android.net.wifi.WifiManager;
@@ -26,6 +19,16 @@ import android.os.IBinder;
26 19
 import android.os.SystemClock;
27 20
 import android.util.Log;
28 21
 
22
+import java.io.BufferedReader;
23
+import java.io.FileReader;
24
+import java.io.IOException;
25
+import java.util.ArrayList;
26
+import java.util.List;
27
+import java.util.Timer;
28
+import java.util.TimerTask;
29
+import java.util.regex.Matcher;
30
+import java.util.regex.Pattern;
31
+
29 32
 public class DroidUptimeService extends Service {
30 33
 	private Timer timer;
31 34
 	private ConfigValues cv;
@@ -38,15 +41,23 @@ public class DroidUptimeService extends Service {
38 41
 	@Override
39 42
 	public void onCreate() {
40 43
 		super.onCreate();
41
-		cv = new ConfigValues(getApplicationContext());
44
+		cv = new ConfigValues(this);
42 45
 		timer = new Timer();
43 46
 		timer.scheduleAtFixedRate(new TimerTask() {
44
-			
45 47
 			@Override
46 48
 			public void run() {
47 49
 				sendUptime();
48 50
 			}
49 51
 		}, 60000, cv.getUpdateInterval() * 1000);
52
+		
53
+		BroadcastReceiver receiver = new BroadcastReceiver() {
54
+            @Override
55
+            public void onReceive(Context context, Intent intent) {
56
+                sendUptime();
57
+            }
58
+        };
59
+        IntentFilter filter = new IntentFilter("org.r3pek.droiduptime.FORCE_UPDATE");
60
+        registerReceiver(receiver, filter, "org.r3pek.droiduptime.permission.FORCE_UPDATE", null);
50 61
 	}
51 62
 	
52 63
 	@Override
@@ -55,14 +66,15 @@ public class DroidUptimeService extends Service {
55 66
 		if (timer != null) timer.cancel();
56 67
 	}
57 68
 	
58
-	@SuppressWarnings("static-access")
59 69
 	private String getMACAddrMD5() {
60
-		WifiManager manager = (WifiManager)getApplicationContext().getSystemService(getApplicationContext().WIFI_SERVICE);
70
+		WifiManager manager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
61 71
 		WifiInfo info = manager.getConnectionInfo();
62 72
 
63 73
 		try {
64 74
 			return MD5.calculateMD5(info.getMacAddress().toLowerCase().replaceAll(":", ""));
65
-		} catch (Exception e) {	}
75
+		} catch (Exception e) {	
76
+		    e.printStackTrace();
77
+		}
66 78
 		return "";
67 79
 	}
68 80
 	
@@ -115,17 +127,16 @@ public class DroidUptimeService extends Service {
115 127
 		}
116 128
 	}
117 129
 	
118
-	@SuppressWarnings("static-access")
119 130
 	public void sendUptime() {
120 131
 		if (cv.getUsername().equals("") || cv.getPassword().equals(""))
121 132
 			return;
122
-		ConnectivityManager conMngr = (ConnectivityManager)getSystemService(getApplicationContext().CONNECTIVITY_SERVICE);
133
+		ConnectivityManager conMngr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
123 134
 		boolean isConnected = false || conMngr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnected();
124 135
 		isConnected |= conMngr.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected();
125 136
 		if (!isConnected) return;
126 137
 		
127 138
 		long uptime = SystemClock.elapsedRealtime() / 1000;
128
-		String agent = "DroidUptime-v1.3";
139
+		String agent = "DroidUptime-v1.4";
129 140
 		String cnb = "1";
130 141
 		String mac = getMACAddrMD5();
131 142
 		String hostname = cv.getHostname();
@@ -134,16 +145,15 @@ public class DroidUptimeService extends Service {
134 145
 		String distrib = "Android";
135 146
 		String distribContent = "SDK " + android.os.Build.VERSION.RELEASE;
136 147
 		distribContent = Base64.encodeToString(distribContent.getBytes(), false);
137
-		Log.d("DroidUptime", agent);
138
-		Log.d("DroidUptime", cnb);
139
-		Log.d("DroidUptime", mac);
140
-		Log.d("DroidUptime", machine);
141
-		Log.d("DroidUptime", os);
142
-		Log.d("DroidUptime", distrib);
143
-		Log.d("DroidUptime", distribContent);
144
-		Log.d("DroidUptime", cv.getUsername());
145
-		Log.d("DroidUptime", cv.getPassword());
146
-		
148
+		/*Log.d("DroidUptime", URLEncoder.encode("http://update.uptimeprj.com/update.php?username=" + cv.getUsername() +
149
+		        "&pass=" + cv.getPassword() +
150
+		        "&cnb=" + cnb +
151
+		        "&mac=" + mac +
152
+		        "&machine=" + machine +
153
+		        "&os="+ os +
154
+		        "&uptime=" +String.valueOf(uptime) +
155
+		        "&distrib=" + distrib +
156
+		        "&distribcontent=" +distribContent));*/
147 157
 		try {
148 158
 			DefaultHttpClient httpclient = new DefaultHttpClient();
149 159
 			HttpPost post = new HttpPost("http://update.uptimeprj.com/update.php?username=" + cv.getUsername());
@@ -161,7 +171,9 @@ public class DroidUptimeService extends Service {
161 171
 			data.add(new BasicNameValuePair("distribcontent", distribContent));
162 172
 			post.setEntity(new UrlEncodedFormEntity(data, HTTP.UTF_8));
163 173
 			
174
+			Log.d("DroidUptime", "Updating uptime");
164 175
 			httpclient.execute(post);
176
+			Log.d("DroidUptime", "Done with updating");
165 177
 			
166 178
 			cv.setLastUpdate(System.currentTimeMillis());
167 179
 		} catch (Exception e) {	e.printStackTrace(); }

+ 12
- 2
src/org/r3pek/droiduptime/Main.java View File

@@ -1,7 +1,5 @@
1 1
 package org.r3pek.droiduptime;
2 2
 
3
-import java.util.List;
4
-
5 3
 import android.app.Activity;
6 4
 import android.app.ActivityManager;
7 5
 import android.app.AlertDialog;
@@ -22,12 +20,15 @@ import android.widget.Button;
22 20
 import android.widget.ImageView;
23 21
 import android.widget.TextView;
24 22
 
23
+import java.util.List;
24
+
25 25
 public class Main extends Activity {
26 26
 	private static final int MENU_ABOUT = 0;
27 27
 	private static final int MENU_SETUP = 1;
28 28
 	private static final int DIALOG_ABOUT = 0;
29 29
 	
30 30
 	private Button btnStartStopService;
31
+	private Button btnUpdate;
31 32
 	private TextView tvStatus;
32 33
 	private TextView tvUptime;
33 34
 	private TextView tvLastUpdate;
@@ -49,6 +50,7 @@ public class Main extends Activity {
49 50
     	cv = new ConfigValues(getApplicationContext());
50 51
     	
51 52
     	btnStartStopService = (Button)findViewById(R.id.btnStartStopService);
53
+    	btnUpdate = (Button)findViewById(R.id.btnUpdate);
52 54
     	tvStatus = (TextView)findViewById(R.id.tvStatus);
53 55
     	tvUptime = (TextView)findViewById(R.id.tvUptime);
54 56
     	tvLastUpdate = (TextView)findViewById(R.id.tvLastUpdate);
@@ -65,6 +67,14 @@ public class Main extends Activity {
65 67
 				updateStatus();
66 68
 			}
67 69
 		});
70
+    	
71
+    	btnUpdate.setOnClickListener(new OnClickListener() {
72
+            @Override
73
+            public void onClick(View v) {
74
+                Intent i = new Intent("org.r3pek.droiduptime.FORCE_UPDATE");
75
+                sendBroadcast(i);
76
+            }
77
+        });
68 78
 	}
69 79
 	
70 80
 	private void startThread() {

Loading…
Cancel
Save