在应用程序安装中添加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,您的应用程序小部件会像制造商一样预装在主屏幕上