在应用程序安装中添加Android小部件

在应用程序安装中添加Android小部件,android,android-widget,lockscreen,Android,Android Widget,Lockscreen,我试图找到一种方法来自动添加一个小部件,而无需用户通过启动器手动将其添加到主页或锁定屏幕(最好两者都添加,但至少要添加到锁定屏幕) 下面是我必须将小部件添加到主屏幕的内容。我错过了什么 public class MyWidgetProvider extends AppWidgetProvider { private static final String ACTION_CLICK = "ACTION_CLICK"; @Override public void onUpda

我试图找到一种方法来自动添加一个小部件,而无需用户通过启动器手动将其添加到主页或锁定屏幕(最好两者都添加,但至少要添加到锁定屏幕)

下面是我必须将小部件添加到主屏幕的内容。我错过了什么

 public class MyWidgetProvider extends AppWidgetProvider {

   private static final String ACTION_CLICK = "ACTION_CLICK";

   @Override
   public void onUpdate(Context context, AppWidgetManager appWidgetManager,
       int[] appWidgetIds) {


     ComponentName thisWidget = new ComponentName(context,
         MyWidgetProvider.class);
     int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);
     final List<AppWidgetProviderInfo> infos = appWidgetManager.getInstalledProviders();


     AppWidgetProviderInfo appWidgetInfo = null;

     for (final AppWidgetProviderInfo info : infos) {
    Log.v("AD3", info.provider.getPackageName() + " / "
            + info.provider.getClassName());
}

     for (final AppWidgetProviderInfo info : infos) {
         if (info.provider.getClassName().equals(thisWidget.getClassName()) && info.provider.getPackageName().equals(thisWidget.getPackageName())) {

        appWidgetInfo = info;
        break;
         }
     }
     if (appWidgetInfo == null)
         return; //stop here

     for (int widgetId : allWidgetIds) {

       int number = (new Random().nextInt(100));

       RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
           R.layout.widget_layout);
       Log.w("WidgetExample", String.valueOf(number));
       remoteViews.setTextViewText(R.id.update, String.valueOf(number));

       Intent intent = new Intent(context, MyWidgetProvider.class);

       intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
       intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);

       PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
           0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
       remoteViews.setOnClickPendingIntent(R.id.update, pendingIntent);
       appWidgetManager.updateAppWidget(widgetId, remoteViews);
     }
   }
 }
公共类MyWidgetProvider扩展了AppWidgetProvider{
私有静态最终字符串ACTION\u CLICK=“ACTION\u CLICK”;
@凌驾
public void onUpdate(上下文上下文,AppWidgetManager AppWidgetManager,
int[]appWidgetIds){
ComponentName thisWidget=新的ComponentName(上下文,
MyWidgetProvider.class);
int[]allWidgetIds=appWidgetManager.getAppWidgetIds(thisWidget);
最终列表infos=appWidgetManager.getInstalledProviders();
AppWidgetProviderInfo appWidgetInfo=null;
对于(最终AppWidgetProviderInfo:infos){
Log.v(“AD3”,info.provider.getPackageName()+”/“
+info.provider.getClassName());
}
对于(最终AppWidgetProviderInfo:infos){
if(info.provider.getClassName().equals(thisWidget.getClassName())&&info.provider.getPackageName().equals(thisWidget.getPackageName())){
appWidgetInfo=info;
打破
}
}
if(appWidgetInfo==null)
return;//停在这里
for(int-widgetId:allWidgetIds){
整数=(new Random().nextInt(100));
RemoteViews RemoteViews=新的RemoteViews(context.getPackageName(),
R.layout.widget_布局);
Log.w(“WidgetExample”,String.valueOf(number));
setTextViewText(R.id.update,String.valueOf(number));
Intent Intent=新的Intent(上下文,MyWidgetProvider.class);
setAction(AppWidgetManager.ACTION\u APPWIDGET\u UPDATE);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_id,appWidgetIds);
PendingEvent PendingEvent=PendingEvent.getBroadcast(上下文,
0,意图,挂起内容。标志(更新当前);
setOnClickPendingEvent(R.id.update,PendingEvent);
updateAppWidgetManager.UpdateAppWidgetId(widgetId,RemoteView);
}
}
}

您没有意识到这是不可能的。没有API可以强制将应用程序小部件添加到主屏幕或锁定屏幕。并非所有的主屏幕和锁屏都支持应用程序小部件

欢迎您使用自己的ROM mod,您的应用程序小部件会像制造商一样预装在主屏幕上