2016-04-07 13 views
0

私の開発したアプリケーションを自分のランチャーのお気に入りに置いて、ランチャーのパッケージ名とクラス名を求めています。 パッケージ名は非常に簡単ですが、私はクラス名は次のようにハッシュが付け加えているマニフェストに見ればClassNameにはそれ以来ではありません。md599e473470f20dc18f556aff51bcfbcb1.LaunchScreenランチャーとして入れるもの:ランチャーのお気に入りのクラス名

だから何で私がランチャーのお気に入りのために使用する必要がクラス名、すべてのものか、クラス名LaunchScreenだけ?

答えて

0

(自分のお気に入りになっておめでとう、あなたはプレイのリンク;-)

を提供しなければならないあなたが言うように、パッケージ名は簡単ですが、それはpackageとしてマニフェストに定義されている

感謝manifest要素の属性:

<manifest .... package="com.sushihangover.playscriptstarling2" ...> 

ランチャークラス名はActivity C#クラス属性、「真MainLauncher =」内タグ付けされたクラスです

はターンでは、これはマニフェストの中activity属性フラグメントを作成します。それはピリオドで始まっていないので、

<activity android:icon="@mipmap/icon" android:label="PlayScriptStarling2" android:name="md5d2519388ea1895e3e3594794d2e0c4ce.MainActivity"> 
    <intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

あなたのクラス名がいっぱいandroid:name属性です。これは、このように私の例では、これは完全なクラス名で、生成されたユニークなサブクラスの識別子である:ほとんどの人は、このクラスのIDを見ることはないだろうが

md5d2519388ea1895e3e3594794d2e0c4ce.MainActivity 

、I 非常にはあなたをお勧めします、これはクラス識別子を生成し、使用して上書きしますあなたのパッケージ名を含むドットクラス表記法。ピリオドで始まる

通常、これはandroid:nameを使用して名前を提供することによって行われ(これは101 ;-)を命名標準のAndroidのクラスですが、Xamarinは現在、A/Wから始まるないサポートアンドロイド速記スタイルのクラス名を行いますドットを使用すると、完全修飾パッケージ名をクラスID名で使用する必要があります。

だから、主な活動の属性は次のようになります。

<activity android:icon="@mipmap/icon" android:label="PlayScriptStarling2" android:name="com.sushihangover.playscriptstarling2.MyBigBadGameEveryOneShouldPlay"> 
    <intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

そして、私のランチャークラス名は次のようになります:

[Activity(Label = "PlayScriptStarling2", Name = "com.sushihangover.playscriptstarling2.MyBigBadGameEveryOneShouldPlay", MainLauncher = true, Icon = "@mipmap/icon")] 

そして、生成されたマニフェストにはなり

com.sushihangover.playscriptstarling2.MyBigBadGameEveryOneShouldPlay 

Androidのドキュメント:

活動()、サービス()、放送受信機()、及びコンテンツプロバイダ -

宣言クラス名

多くの要素は、アプリケーション自体(要素)とその主要コンポーネントの要素を含む、Javaオブジェクトに対応します()。

コンポーネントクラス(Activity、Service、BroadcastReceiver、およびContentProvider)のほとんどの場合と同様に、サブクラスを定義すると、サブクラスはname属性によって宣言されます。名前には完全なパッケージ名を含める必要があります。たとえば、次のようにサービス・サブクラスを宣言される可能性があります。

<manifest . . . > 
    <application . . . > 
     <service android:name="com.example.project.SecretService" . . . > 
      . . . 
     </service> 
     . . . 
    </application> 
</manifest> 

しかし、文字列の最初の文字がピリオドであれば省略形として、文字列は、アプリケーションのパッケージ名に付加されます(要素のpackage属性で指定されているとおり)。

次の割り当ては上記と同じである。

<manifest package="com.example.project" . . . > 
    <application . . . > 
     <service android:name=".SecretService" . . . > 
      . . . 
     </service> 
     . . . 
    </application> 
</manifest> 

コンポーネントを開始、Androidは名前サブクラスのインスタンスを作成します。サブクラスが指定されていない場合は、基本クラスのインスタンスが作成されます。

参考:http://developer.android.com/guide/topics/manifest/manifest-intro.html

参考:あなたの完全な答えをhttps://developer.xamarin.com/guides/android/advanced_topics/working_with_androidmanifest.xml/#Intent_Actions_and_Features

+0

ありがとうを! –

+0

NP、そしてもう一度おめでとう – SushiHangover

+0

私のではなく、威信を持っているクライアント。今年の夏のブラジルでの試合のために、もし私が何を意味するのか分かっているなら。そして、私はちょうど私がそれについて話すことが許されているかどうかわからないので、私の投稿の初めを修正しました...あなたの迅速な答えにもう一度感謝! –

関連する問題