2012-03-24 19 views
10

ドキュメント(http://developer.android.com/guide/topics/manifest/manifest-element.html#uid)は、生の文字列とそれが追加されたAPIレベルを使用できないと述べていますが、なぜそれを使用したいのか説明していません。 アンドロイド:sharedUserIDを「com.foo.bar」に設定していれば、android:sharedUserLabelで参照される文字列にどのような値を入れるべきですか?そして最も重要なのはなぜですか? android:sharedUserLabelとは何ですか?android:sharedUserIDの上に追加された付加価値は何ですか?

はありがとう

答えて

7

限り(あなたが同じUIDで複数のプロセスを持っている場合)AOSPは、実際にユーザーにかなりの名前を表示するだけで、このラベルを使用することができますから、私は理解して。たとえば、RunningState.javaファイルのコードの一部を次に示します。

// 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) { 
     } 
    } 

基本的に、次のことを行います。まず、プロセス全体に関する情報を取得しようとします。見つからない場合は、アプリケーションのUIDをパラメータとして情報を取得しようとします(これはここで示したコードの一部です)。このUIDを持つパッケージが1つだけの場合、プロセスに関する情報はこのパッケージから得られます。しかし、いくつかのパッケージ(shareUserIdを使用している)があれば、それは反復し、正式な(かなり)名前を見つけることを試みます。したがって

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

、名前Mediaを持つことになりますandroid:sharedUserId="android.media"を使用するすべてのプロセス:私の言葉に確認として

は私がMediaProviderで次の文字列を発見しました。

私はこの機能が普通の開発者によって多く使用されるとは思わないし、それらのために便利です。

関連する問題