2012-03-24 11 views
10

Belgeler (http://developer.android.com/guide/topics/manifest/manifest-element.html#uid) yalnızca ham dizeleri ve eklendiği API düzeyini kullanamadığımı belirtir, ancak neden kullanmak istediğimi açıklamıyor. Zaten android ayarlıyorum: sharedUserID "com.foo.bar" değerine android: sharedUserLabel tarafından başvurulan dizeye hangi değeri koymalıyım ve en önemlisi neden !? Android nedir: sharedUserLabel ve android üzerinde hangi katma değer eklendi: sharedUserID?

teşekkür ederiz

cevap

7

Bildiğim kadarıyla (eğer aynı kullanıcı kimliğini birkaç süreçleri varsa) AOSP aslında bir kullanıcı için oldukça adını görüntülemek için sadece bu etiket kullanabilirsiniz dan anladığım kadarıyla.

// If we couldn't get information about the overall 
    // process, try to find something about the uid. 
    String[] pkgs = pm.getPackagesForUid(mUid); 

    // If there is one package with this uid, that is what we want. 
    if (pkgs.length == 1) { 
     try { 
      ApplicationInfo ai = pm.getApplicationInfo(pkgs[0], 0); 
      mDisplayLabel = ai.loadLabel(pm); 
      mLabel = mDisplayLabel.toString(); 
      mPackageInfo = ai; 
      return; 
     } catch (PackageManager.NameNotFoundException e) { 
     } 
    } 

    // If there are multiple, see if one gives us the official name 
    // for this uid. 
    for (String name : pkgs) { 
     try { 
      PackageInfo pi = pm.getPackageInfo(name, 0); 
      if (pi.sharedUserLabel != 0) { 
       CharSequence nm = pm.getText(name, 
         pi.sharedUserLabel, pi.applicationInfo); 
       if (nm != null) { 
        mDisplayLabel = nm; 
        mLabel = nm.toString(); 
        mPackageInfo = pi.applicationInfo; 
        return; 
       } 
      } 
     } catch (PackageManager.NameNotFoundException e) { 
     } 
    } 

Temelde, şunları yapar: Örneğin, burada RunningState.java dosyasındaki kod parçasıdır. İlk başta, genel süreç hakkında bilgi almaya çalışır. Bulamadıysa, uygulamanın UID'sini parametre olarak kullanarak bilgi almaya çalışır (bu, burada verdiğim kodun bir parçasıdır). Bu UID ile sadece bir paket varsa, bu paketten işlem hakkında bilgi alınır. Ancak birkaç paket varsa (shareUserId kullanarak), o zaman yineleyin ve resmi (güzel) adını bulmaya çalışır. Böylece

<!-- Label to show to user for all apps using this UID. --> 
<string name="uid_label">Media</string> 

, isim Media olacak android:sharedUserId="android.media" kullandığı tüm süreci: Sözlerimi teyidi olarak

Ben MediaProvider aşağıdaki dize buldum.

Bu özelliğin normal geliştiriciler tarafından çok fazla kullanılmayacağını ve onlar için yararlı olacağını düşünmüyorum.

İlgili konular