
!!!!!!!!Listing 1 ///Überschrift: Definition eines Eingabefelds mit festgelegtem Typ

<EditText
    android:id="@+id/demoField"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:inputType="textEmailAddress" >          
</EditText>


!!!!!!!!Listing 2 ///Überschrift: Beispielhafte Definition eines Intent Filters

 <activity android:name="IntentReceiver" android:permission="ix.intentdemo.DemoPermission">
            <intent-filter >
                <action android:name="ix.intentdemo.action1"/>
                <category android:name="ix.intentdemo.category1"/>
                <category android:name="ix.intentdemo.category2"/>
                <data android:scheme="intent_demo"/>
            </intent-filter>
  </activity>





!!!!!!!!Listing 3 ///Überschrift: Exemplarische Methode zur Validierung von Intents

    // Namen der erlaubten Extra-Attribute
    final static ArrayList<String> extraList =
		      new ArrayList<String>(Arrays.asList(
				"extra1",
				"extra2"
			  ));	

	protected boolean checkIntent(Intent intent) {
		// Diese Methode geht davon aus, dass
		// Action, Category und Scheme deklarativ 
		// im Manifest vorgefiltert wurden.
						
		// Check 1: Prüfung auf DEFAULT-Kategorie
		Set<String> categories = intent.getCategories();
		if (categories == null)			
			return false;
		
		// Check 3: Alle erwarteten Extras vorhanden?
		Bundle extras = intent.getExtras();
		if (extras == null)
			return false;
		for (String e: extraList) {
			if (!extras.containsKey(e))
				return false;
		}

		// Check 4: Nicht erwartete Extras?
		if (extras.size() > extraList.size())
			return false;
		
		// Check 5: Prüfung des URI-Formats
		String data = intent.getDataString();
		if (data == null)
			return false;
		// Nachfolgend App-spezifische Prüfung
		// von data, z.B. mit regulärem Ausdruck
		// ...
		
		// Check 6: Prüfung des Absenders
		String caller = this.getCallingPackage();
		if (caller == null)
			return false;
		if (!caller.equals("ix.intentdemo"))
			return false;
		
		return true;
	}




!!!!!!!!Listing 4 ///Überschrift: Installation eines CA-Zertifikats mit Android 4.0


  final static int BUFSIZE = 2048;
  Intent installIntent;
  // Intent erzeugen
  installIntent = KeyChain.createInstallIntent();
  
  // Name setzen
  installIntent.putExtra(KeyChain.EXTRA_NAME, "My CA Cert");
  
  // Zertifikat einlesen...
  BufferedInputStream is = new BufferedInputStream(
    getResources().openRawResource(R.raw.cacert), BUFSIZE);
  byte[] buf = new byte[BUFSIZE];
  int certSize = is.read(buf);

  // ...und dem Intent beifügen
  installIntent.putExtra(KeyChain.EXTRA_CERTIFICATE, 
    Arrays.copyOf(buf, certSize));
  startActivityForResult(installIntent, 10);
    
  

 
 
!!!!!!!!Listing 5 ///Überschrift: Einfacher Root Checker

	// Dateien, die auf Rooting deuten
	final static String[] blacklist =  {
   		"/system/bin/su",
		"/system/xbin/su",
		"/system/app/Superuser.apk",
		"/data/app/com.noshufou.android.su.apk",
		"/data/app/com.z4mod.z4root.apk"
	};
	
	final static ArrayList<String> suidRootWhitelist = new ArrayList<String>(Arrays.asList(
			"/system/bin/run-as"
			// ggf. gerätespezifisch anpassen und erweitern
	));


   public boolean isRooted() {
    	// Erste Stufe: Existenz von Dateien der Blacklist prüfen
    	for (String fileName : blacklist) {
    		if (new File(fileName).exists()) {
    			return true;
    		}		
    	}
    	
      // Zweite Stufe: SUID-<I>root<I>-Programme prüfen	
      boolean rooted = false;	  
      // Regulärer Ausdruck fuer SUID-<I>root<I> in der Ausgabe von ls -l
      Pattern pattern = Pattern.compile("^-..s...... root");
      
      try {
		Process proc = Runtime.getRuntime().exec("ls -l -R /system");
		  BufferedReader in = 
			new BufferedReader(new InputStreamReader(proc.getInputStream()), 8192);
		String dirEntry;
		String currentDir = "";
		  
		while ( ((dirEntry = in.readLine()) != null) && (!rooted)) {
			// Falls Eintrag ein Verzeichnisname ist: Pfad merken
			if (dirEntry.startsWith("/"))
				currentDir = dirEntry.substring(0, dirEntry.length()-1);			
			Matcher matcher = pattern.matcher(dirEntry);
			// Falls SUID-<I>root<I>-Programm
			if (matcher.find()) {
				rooted = true;
				
				// absoluten Pfad konstruieren
				String fileName = currentDir + "/" + 
				  dirEntry.substring(dirEntry.lastIndexOf(" ") +1);
				
				// Prüfen, ob gefundenes Programm auf Whitelist steht
				if (suidRootWhitelist.contains(fileName))
					rooted = false;			
			}
		}
		in.close();
		proc.waitFor();
      }
	  catch ...
	  
      return rooted;
   }
    




!!!!!!!!Listing 6 ///Überschrift:catch-all Exception Handler

    Thread.setDefaultUncaughtExceptionHandler(
	   new Thread.UncaughtExceptionHandler() {
			public void uncaughtException(Thread thread, Throwable ex) {			
				Runtime.getRuntime().exit(1);
			}
	});




  
