3

私はデバイス用のAndroidアプリケーションを開発しようとしています(デバイスはタブレットや電話ではなく、Android 4.1.1を実行する事前構成されたAndroidボードです)。アクティビティの1つは、以下に示すように、いくつかのタイプの情報のカスタマイズされたダッシュボードを表示する必要があります ここに画像の説明を入力してください

ここに表示される情報の種類は事前に構成されています。これらすべてを最初から開発するのではなく、ウィジェット(天気やカレンダーなど)を備え、レイアウトにウィジェットを含めるアプリをインストールすることを計画しています。

以下のリンクを参照しました

自分のアプリケーションにウィジェットを追加します。-Android

http://www.anddev.org/appwidgethost_tutorial-t10329.html

ほとんどのコードを完成させました。

public class MainActivity extends Activity {


    private AppWidgetManager mAppWidgetManager;
    private AppWidgetHost mAppWidgetHost;
    static final int APPWIDGET_HOST_ID = 2037;
    private AppWidgetHostView widgets[] = new AppWidgetHostView[16];



    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mAppWidgetManager = AppWidgetManager.getInstance(this);
        mAppWidgetHost = new AppWidgetHost(this, APPWIDGET_HOST_ID);

        setContentView(r.id.layout_main);


    ****here is where I am stuck??****
        int [] ids = AppWidgetManager.getInstance(context).getAppWidgetIds(name);


        mAppWidgetHost.startListening();

    }

しかし、私が立ち往生している場所は、ウィジェットマネージャーを指定して必要な特定のウィジェットを取得するにはどうすればよいですか。ウィジェット「com.android.deskclock/com.android.alarmclock.AnalogAppWidgetProvider」に興味があるとしましょう

ご意見をお聞かせください。


更新: 以下のコードを追加しました

 mAppWidgetManager = AppWidgetManager.getInstance(this);
        mAppWidgetHost = new AppWidgetHost(this, APPWIDGET_HOST_ID);
        int appWidgetId = mAppWidgetHost.allocateAppWidgetId();
        ComponentName name = new ComponentName("com.android.deskclock","com.android.alarmclock.AnalogAppWidgetProvider");

        int [] ids = mAppWidgetManager.getAppWidgetIds(name);

        if(ids != null && ids.length>0){
            System.err.println("Number of widget ids :"+ids.length);
            AppWidgetProviderInfo appWidgetInfo = mAppWidgetManager.getAppWidgetInfo(ids[0]);
            appWidgetId = ids[0];
            LinearLayout parent= (LinearLayout) findViewById(R.id.generalDashboardLayout);
            parent.addView(mAppWidgetHost.createView(this, appWidgetId, appWidgetInfo));
        }else{
            System.err.println("Ids is null");
        }

常に「Idsisnull」と出力されますビューに追加するウィジェットが見つかりません

助けてください

4

2 に答える 2

2

最後に、以下のコードを使用して問題を解決しました

mAppWidgetManager = AppWidgetManager.getInstance(this);
        mAppWidgetHost = new AppWidgetHost(this, APPWIDGET_HOST_ID);
        int appWidgetId = mAppWidgetHost.allocateAppWidgetId();
        ComponentName name = new ComponentName("com.android.deskclock","com.android.alarmclock.AnalogAppWidgetProvider");

        int [] ids = mAppWidgetManager.getAppWidgetIds(name);

        if(ids != null && ids.length>0){
            System.err.println("Number of widget ids :"+ids.length);
            AppWidgetProviderInfo appWidgetInfo = mAppWidgetManager.getAppWidgetInfo(ids[0]);
            appWidgetId = ids[0];
            LinearLayout parent= (LinearLayout) findViewById(R.id.generalDashboardLayout);
            parent.addView(mAppWidgetHost.createView(this, appWidgetId, appWidgetInfo));
        }else{
            System.err.println("Ids is null");
        }
于 2012-11-20T21:50:37.917 に答える
1

はい、できます。すべてのホーム画面アプリケーションと同様に、AppWidgetHostクラスを使用する必要があります。

これが、使い方を学ぶために使用できるソースコードのホーム画面アプリです。 http://code.google.com/p/android-launcher-plus/

于 2012-11-20T20:37:37.473 に答える