2011-08-12 36 views
0

所以我試圖通過按下一個小部件來開始一個活動。我一直遇到錯誤「方法startActivity(意圖)是未定義類型的照片」任何幫助非常感謝!我的班級代碼如下:該方法的startActivity(Intent)方法未定義?

package com.natehoch96.widgets.iOS; 

import android.appwidget.AppWidgetProvider; 
import android.content.Intent; 


public class Photos extends AppWidgetProvider { 

    Intent myIntent = new Intent(android.provider.Settings.ACTION_SETTINGS); 
    {startActivity(myIntent); } 

} 

回答

1

您需要實現的onUpdate()和的onReceive()在你的AppWidgetProvider類方法,像這樣:

public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
    int[] appWidgetIds) { 
    final int N = appWidgetIds.length; 
    for (int i=0; i<N; i++) { 
     int appWidgetId = appWidgetIds[i]; 

     //Get the views for your widget layout 
     RemoteViews views = new RemoteViews(context.getPackageName(), 
      R.layout.my_widget); 

     //Create a pending intent for a widget click 
     Intent intent = new Intent(context, Photos.class); 
     intent.setAction("PhotosAction"); 
     PendingIntent pendingIntent = 
      PendintIntent.getBroadcast(context, 0, intent, 0); 
     views.setOnClickPendingIntent(R.id.widget_click_view, pendingIntent); 

     appWidgetManager.updateAddWidget(appWidgetId, views); 
    } 
} 

然後寫你的onReceive()方法來接收掛起的意圖,並啓動相關活動:

public void onReceive(Context context, Intent intent) { 
    super.onReceive(context, intent); 

    if (intent.getAction().equals("PhotosAction") { 
     //Received photos action action, start your target activity 
     Intent i = new Intent(android.provider.Settings.ACTION_SETTINGS); 
     i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(i); 
    } 
} 
+0

謝謝!有效!出於某種原因,雖然它沒有在HTC Sense上工作,但我覺得這可能只是Sense的東西,因爲它在我的模擬器中工作。另外,假設我希望它啓動照片應用程序,我將如何着手搞清楚系統定義的意圖。感謝您的幫助 – natehoch96

+0

您是否正在嘗試查看圖像,即您有URI並希望啓動查看器,如果是這樣的話,請查看以下問題:[link](http://stackoverflow.com/questions/2954594 /啓動意圖 - 行動 - 視圖 - 意圖 - 不工作 - 在保存的圖像文件)。我不確定您可以依賴「系統定義的意圖」,因爲不同的製造商可能會提供他們自己的圖庫應用程序,例如HTC,三星.. – Jer

0

你把這段代碼放在哪裏? AppWidgetProvider沒有startActivity()方法。你需要一個ContextAppWidgetProvider的幾個回調方法可以讓你訪問Context對象,但這一切都取決於你打算做什麼。

我建議你看一下Android開發者指南關於AppWidgets here的文檔。

+0

好的我在開發中非常新,所以究竟是一個上下文,我將如何使用它?我試着看文檔,但它並沒有真正幫助我,任何幫助,非常感謝。謝謝 – natehoch96