ドキュメント(http://developer.android.com/guide/topics/manifest/manifest-element.html#uid)は、生の文字列とそれが追加されたAPIレベルを使用できないと述べていますが、なぜそれを使用したいのか説明していません。 アンドロイド:sharedUserIDを「com.foo.bar」に設定していれば、android:sharedUserLabelで参照される文字列にどのような値を入れるべきですか?そして最も重要なのはなぜですか? android:sharedUserLabelとは何ですか?android:sharedUserIDの上に追加された付加価値は何ですか?
はありがとう
10
A
答えて
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"
を使用するすべてのプロセス:私の言葉に確認として
私はこの機能が普通の開発者によって多く使用されるとは思わないし、それらのために便利です。
関連する問題
- 1. EU付加価値税(VAT)と支払い方法とは何ですか追加料金はノーキャンペーンで課税されますか?
- 2. Intellijでは「ライブラリとして追加」とは何ですか?
- 3. GitHubのグラフ作成メトリクスでは、「追加」とは何ですか?
- 4. DrawStringメソッドでデフォルトに追加されたTextMarginサイズは何ですか?
- 5. ASP.NET Core IdentityでIdentityServer 4を使用することの付加価値は何ですか?
- 6. Doctrineはアクティブレコードの上に何を追加しますか - CodeIgniter?
- 7. ASP.NETプロファイルプロバイダー:それは付加価値ですか?
- 8. mysqlクエリにランク付けすると何が追加されますか?
- 9. MySQLで使用されるデフォルトフィールドと追加フィールドは何ですか?
- 10. 何らかの理由で、動的に追加されたエレメントにmouseenterイベントを追加するには、何らかの理由で、ネイティブJS
- 11. Python - 「フィールドのプロパティを追加する」とは何ですか?
- 12. HDFS上のファイルに追加する推奨方法は何ですか?
- 13. System.Web.Caching.Cacheに追加される項目のデフォルトの動作は何ですか?
- 14. 付加価値
- 15. DjangoのINSTALLED_APPSに追加する目的は何ですか?
- 16. 私のアプリケーションに評価機能を追加したいこれを行う方法は何ですか?
- 17. ドッカー - チームにとって本当の価値は何ですか?
- 18. コンポーネントにイベントリスナーを追加し、そのコンポーネントをパネルまたはフレームに追加する順序は何ですか?
- 19. ContextLoaderListenerをServletContextに追加する目的は何ですか?
- 20. python: `__slots__`に`__dict__`を追加する点は何ですか?
- 21. sap.m.Inputに必須マークを追加するベストプラクティスは何ですか?
- 22. サブライムテキスト "Goto Anything"検索に追加される数字は何ですか?
- 23. laravelで定数を追加するベストプラクティスは何ですか? (ロングリスト)
- 24. 等価クラスとは何ですか?
- 25. ストーリーボード上のUIViewまたはストーリーボード上のバーの追加の違いは何ですか?
- 26. appendChild()で追加できるJSオブジェクトは何ですか?
- 27. Rで使用できる追加ラインタイプは何ですか?
- 28. JavaスイングでJScrollPaneをパネルに追加すると何も表示されない何かが表示される
- 29. Magento - 計算された価格の上にパーセンテージを追加
- 30. メソッドに追加すると、constructキーワードは何をしますか?