2012-03-08 14 views
0

私は、サービスプロバイダクラス、レシーバクラス、および他のいくつかのリソースで構成された、完全に機能するAndroidウィジェットを持っています。別のアプリの中からアンドロイドウィジェットをインストールする

ウィジェットのクラスと必要なリソースを正常にインポートしたアプリがあります。アプリケーションの中にボタンメニュー(ハードメニューボタンにコード化されています)があり、そのボタンを使ってウィジェットをインストールしたいと思います。ウィジェットがホームページに表示されているかどうかは気にしません(私はあなたがアプリ内からそうすることはできません)。ウィジェットをインストールし、ホーム画面の「ウィジェット」メニューのオプションにしたいだけです。
私はアプリ内からサービスを開始しようとしましたが、ウィジェットに更新を送信して、.OnEnabledを呼び出そうとしましたが、Javaクラスをインスタンス化しようとしました...私は明らかに何かが足りなくて、アンドロイドのドキュメントから。私はこれは本当にばかな質問ですけど

は...

はどのようにしてウィジェットを実行し、インストールするためのサービス・プロバイダを得ることができますか? (例として使用WidgetServiceProvider.javaとWidgetReceiver.java)

public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) 
    {   
     ... 
    case R.id.installWidget: 
     ????????  
     break; 
    } 
+0

あなたはおそらく、あなたのAndroidManifest.xmlを、関連する 'android.appwidget.provider' XMLメタを投稿する必要があります-データ。 – Jens

答えて

1

あり(ハードメニューボタンにコード化された)ボタンメニューはアプリ内にあると私はインストールすることで、ボタンを使用したいですウィジェット。ウィジェットがホームページに表示されているかどうかは気にしません(アプリ内からはできません)。

これらの文章は私にとってはあまり意味がありません。あなたはアプリを使ってホームページにウィジェットを入れたいと言っていますが、アプリ内からはできないことを知っています。

ウィジェットを取得する方法についてマニフェストXMLファイルによって実現されるウィジェットメニューに自動的にインストールされます。

完全なチュートリアルでは、hereを見ることができますが、あなたの質問に固有のこれらのタグの変形をマニフェストXMLファイルのアプリケーションタグに追加するだけでよいでしょう。タグの

<receiver android:name="[Package name]" android:label="[Your Label]"> 
    <intent-filter> 
    <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
    </intent-filter> 
    <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget" /> 
</receiver> 

リンク:

+0

私は自分自身と矛盾しないので、あなたはそれを慎重に読んでいません。 私のウィジェットが「マニフェストから自動的にインストールされていません」。 私は、ウィジェットをホームページに配置しようとしていなかったが、インストールするだけであることをはっきりと区別しました。これは役に立たず、この "自動インストール"を引き起こすマニフェスト要素は含まれていません –

+0

私はあなたのコメントに基づいてより多くの情報で自分の答えを更新しましたが、すでにマニフェストファイルにこの情報がある場合は、私たちはそれをデバッグすることができます。 – BoredAndroidDeveloper

+0

編集した回答は、今後これを参照する方に役立ちます。 私の実際の問題は、受信タグとサービスタグがアクティビティタグの内側にあることでした。マニフェストでは、アクティビティ、レシーバ、およびサービスクラスがマニフェスト内のすべての個別の(インテントフィルタを使用して)個別であり、タグ以外のものにネストされていないことを確認します。 これは、ウィジェットがマニフェストを通してどのようにインストールされるか、さらに詳細を編集する時間がかかりましたので、答えとしてマークします。 –

関連する問題