2012-04-15 10 views
0

私が開発し、Androidのウィジェットいてくださいと私は、ウィジェットは、ユーザーが自分のホーム画面に私のウィジェットを追加した場合、彼は彼の画面に再度追加することはできないはず意味し、単数形であることをことをしたい特異Androidのウィジェットが

+1

あなたはなぜ、そのようにユーザーを制限したいと思います良い経験則は、あなたがやりたいことをやることをユーザーが妨げないようにしてください。あるいは、彼らのためにそれを行い、彼らを助け、物事を簡単にする別のアプリを見つけるでしょう。 y私たちのアプリ:) – erbsman

+0

私のアプリケーションからウィジェット以上のものを使用すると、アプリケーションに大きなダメージを与えることがあります! – enGMzizo

答えて

1

当初

2 nullに設定、ウィジェットIDを追跡するためにあなたAppWidgetProviderでのpublic static Integer型の変数を作成します)

1のための構成アクティビティーを作成します):あなたは、これを達成するために試みることができる回避策がありますウィジェット(ここの手順はhttps://developer.android.com/guide/topics/appwidgets/index.html#Configuring

3)構成アクティビティで、プロバイダの変数のステータスを確認します。ウィジェットがすでに作成されている場合(idがnullでない場合)、AlertDialogを使用してメッセージを表示し、その結果をキャンセルに設定できます。

あなたのコードは次のようになります。

プロバイダでは:として

public class MyAppWidgetProvider extends AppWidgetProvider { 
    public static Integer widgetId; 

    @Override 
    public void onDeleted(Context context, int[] appWidgetIds) { 
     //If the current widget has been deleted, set widget id to null again 
     for(int i = 0; i < appWidgetIds.length; i++){ 
      if(widgetId == appWidgetIds[i]){ 
       widgetId = null; 
      } 
     } 
     super.onDeleted(context, appWidgetIds); 
    } 
} 
コンフィギュレーション活動で

public class ConfigurationActivity extends Activity { 
    public int appWidgetId; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     Intent intent = getIntent(); 
     Bundle extras = intent.getExtras(); 
     if (extras != null) { 
      appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); 
     } 

     if(MyAppWidgetProvider.widgetId != null){ 
      AlertDialog.Builder builder = new AlertDialog.Builder(this); 
      builder.setMessage("Widget already created"); 
      builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        Intent resultValue = new Intent(); 
        resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); 
        setResult(RESULT_CANCELED, resultValue); 
        finish(); 
       } 
      }); 
      AlertDialog dialog = builder.create(); 
      dialog.show(); 
     } else { 
      MyAppWidgetProvider.widgetId = appWidgetId; 
      Intent resultValue = new Intent(); 
      resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); 
      setResult(RESULT_OK, resultValue);  
      finish(); 
     } 
    } 
} 
関連する問題