# Auf Play Store verlinken - Code in einer Extraklasse



## camou (29. Mrz 2015)

Hi all,

manchmal blicke ich einfache Javazusammenhänge nicht so richtig.

In einer "App" von mir, gelangt man durch ein Button-Klick zum Play Store. Davon gibt es insgesamt drei Buttons und in jeder Activity habe ich folgenden Code:


```
Intent intent = new Intent(Intent.ACTION_VIEW);
		intent.setData(Uri.parse("market://details?id=meinAppLink"));
		startActivity(intent);
```

Der funktioniert soweit auch und ist auch nur son google Snippet.

Ich finde es aber total doof drei mal denselben Code in die Activitys zu schreiben, deshalb habe ich ein RateThisApp-class erstellt.


```
public class RateThisApp extends Activity {

	public void rateThisApp() {
		
		Intent intent = new Intent(Intent.ACTION_VIEW);
		intent.setData(Uri.parse("market://details?id=meinAppLink"));
		startActivity(intent);
}
}
```
Ausgeführt wird der Code wie folgt:

```
RateThisApp rta = new RateThisApp();
rta.rateThisApp();
```

Allerdings wirft der Compiler mir eine Nullpointer-Exception. Könnte mir mal jmd. den Zusammenhang erklären, wie Java (Android) da arbeitet. Vermutlich fehlt nur ein Wert der mitübergeben werden muss, aber ich blicke es iwie nicht.


----------



## dzim (31. Mrz 2015)

Weil du eine Activity erstellen willst, aber keine *#onCreate* etc. implementierst.
Das ist aus Sicht des Android-SDKs aber auch blanker Blödsinn. 
Ich wiederhole mich damit zwar etwas, aber studiere bitte einmal die API von Android und den Activity Life Cycle, dann verstehst du vielleicht auch, dass eine Activity in der "klassischen" Desktop-UI-Programmierung noch einem Full-Screen-Fenster am nächsten kommt.

Um einen Intent abzusetzen genügt an dieser Stelle eine Utilities-Klasse mit einer statischen Methode:


```
public class Utils  {
	public static void rateThisApp(Context c) {
		// do it here via: c.startActivity(...)
	}
}
```

Konkreter Link zum Play Store (Bsp. bei StackOverflow):
http://stackoverflow.com/questions/...ay-store-directly-from-my-android-application

*#edit*
aufrufen tust du es dann aus deiner Activity oder dem Fragment heraus via

```
Utils.rateThisApp(this); // in Activity
Utils.rateThisApp(getActivity()); // in Fragment
```


----------

