2010-11-03 6 views
0

У меня есть основное окно активности в моем приложении, в котором отображаются три значка на нем, а также есть 3 виджета для домашнего экрана в этом приложении.Установить виджеты главного экрана progrommaticly

Есть ли возможность долгое нажатие на одну из значков в основном действии, чтобы сделать то же поведение, что и при установке ярлыков программы из меню приложения при перетаскивании ярлыков на рабочем столе? (Например, это видео: http://www.youtube.com/watch?v=DQ37cASti4k) или пользователю нужно перейти на главный экран \ menu \ add \ widget ??

ответ

4

Пользователь должен будет вручную установить виджет приложения. Поскольку виджеты должны быть размещены - и поэтому у пользователей нет навязанных им виджетах приложений, пользователи должны выбрать, чтобы добавить их на свой домашний экран.

+0

Но как вы можете поставить их с возможностью перетащить виджет из вашего приложения на главном экране? –

+0

@AdamArold: AFAIK, это невозможно, извините. Главный экран - это единственный, который может инициировать такую ​​операцию. – CommonsWare

0

В Android O можно настроить программный виджет.

AppWidgetManager mAppWidgetManager = 
    context.getSystemService(AppWidgetManager.class); 

AppWidgetProviderInfo myWidgetProviderInfo = new AppWidgetProviderInfo(); 
ComponentName myProvider = myWidgetProviderInfo.provider; 

if (mAppWidgetManager.isRequestPinAppWidgetSupported()) { 
    // Create the PendingIntent object only if your app needs to be notified 
    // that the user allowed the widget to be pinned. Note that, if the pinning 
    // operation fails, your app isn't notified. 
    Intent pinnedWidgetCallbackIntent = new Intent(...); 

    // Configure the intent so that your app's broadcast receiver gets 
    // the callback successfully. This callback receives the ID of the 
    // newly-pinned widget (EXTRA_APPWIDGET_ID). 
    PendingIntent successCallback = PendingIntent.createBroadcast(context, 0, 
      pinnedWidgetCallbackIntent); 

    mAppWidgetManager.requestPinAppWidget(myProvider, null, 
      successCallback.getIntentSender()); 
} 

Также проверьте Google официальный documentation

Смежные вопросы