Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在Appwidget远程视图中';用户强制停止应用程序后,未调用SetOnClickPendingEvent_Android_Broadcastreceiver_Android Service_Android Appwidget_Appwidgetprovider - Fatal编程技术网

Android 在Appwidget远程视图中';用户强制停止应用程序后,未调用SetOnClickPendingEvent

Android 在Appwidget远程视图中';用户强制停止应用程序后,未调用SetOnClickPendingEvent,android,broadcastreceiver,android-service,android-appwidget,appwidgetprovider,Android,Broadcastreceiver,Android Service,Android Appwidget,Appwidgetprovider,在这里,我制作了一个小部件,并在我启动一项服务的地方添加了它的点击监听器。它工作得很好。但一旦用户强制停止应用程序,我的小部件的点击就没有响应。我不明白为什么会发生这种情况。对此的帮助将不胜感激。谢谢 我的应用程序小部件类代码: MyWidget.java: public class MyWidget extends AppWidgetProvider { static Context cont; static SharedPreferences preferences;

在这里,我制作了一个小部件,并在我启动一项服务的地方添加了它的点击监听器。它工作得很好。但一旦用户强制停止应用程序,我的小部件的点击就没有响应。我不明白为什么会发生这种情况。对此的帮助将不胜感激。谢谢

我的应用程序小部件类代码:

MyWidget.java:

public class MyWidget extends AppWidgetProvider {

    static Context cont;
    static SharedPreferences preferences;


    static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
                                int appWidgetId) {

        cont = context;
        Intent intent2 = new Intent();

        intent2.setAction("....");
        PendingIntent pendingIntent = PendingIntent.
                getBroadcast(context, 0,
                        intent2, PendingIntent.FLAG_UPDATE_CURRENT);

        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_widget);
        views.setOnClickPendingIntent(R.id.appwidget_text, pendingIntent);

        appWidgetManager.updateAppWidget(appWidgetId, views);
    }

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        // There may be multiple widgets active, so update all of them

        for (int appWidgetId : appWidgetIds) {
            updateAppWidget(context, appWidgetManager, appWidgetId);
        }
    }
@Override
    public void onReceive(Context context, Intent intent) {
        super.onReceive(context, intent);
                context.startService(new Intent(context, MyService.class));

       }
  @Override
    public void onEnabled(Context context) {
..................  }
  @Override
    public void onDisabled(Context context) {
  .................}

尽可能使用明确的
意图。您的代码无法在Android 8.0及更高版本上运行,因为在Android 8.0及更高版本中禁止隐式广播。显式意图可以将应用程序移出停止状态。

切换到使用显式意图(
新意图(上下文,YourReceiver.class)
)而不是隐式
意图(
设置动作(“…”);
)。至少,这将消除一些安全问题。在这种情况下,它可能会有所帮助,因为明确的
意图
是将应用程序移出停止状态的方法。@commonware-谢谢..这很有帮助。