gpt4 book ai didi

android - java.lang.SecurityException : Not allowed to start service Intent 错误

转载 作者:行者123 更新时间:2023-11-29 14:55:38 26 4
gpt4 key购买 nike

大家好,当我将我的应用程序安装到模拟器时,我得到了这个:

ERROR/AndroidRuntime(465): java.lang.RuntimeException: Unable to start receiver com.myPackage.Widget.MYWidget: java.lang.SecurityException: Not allowed to start service Intent { cmp=com.myPackage/.Widget.MYWidget$MyWidgetService } without permission android.permission.BIND_REMOTEVIEWS

这是我 list 中的代码

    <!-- Broadcast Receiver that will process AppWidget updates -->
<receiver android:name=".Widget.MYWidget" android:label="@string/app_name">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />

<!--Broadcast Receiver that will also process our self created action -->
<action android:name="com.temp.package.Widget.MYWidget.ACTION_WIDGET_LEFT_RECEIVER" />


<action android:name="com.temp.package.Widget.MYWidget.ACTION_WIDGET_PROGRESSBAR_RECEIVER" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/mywidget_widget_provider" />

</receiver>
<service android:name=".Widget.MYWidget$MyWidgetService"
android:permission="android.permission.BIND_REMOTEVIEWS"
android:exported="true" />
<uses-permission
android:name="android.permission.BIND_REMOTEVIEWS"></uses-permission>

这是我的代码

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

Intent svcIntent = new Intent(context, MyWidgetService.class);

//svcIntent.setData(Uri.parse(svcIntent.toUri(Intent.URI_INTENT_SCHEME)));
context.startService(svcIntent);
}

public static class MyWidgetService extends Service
{
@Override
public void onStart(Intent intent, int startId)
{
super.onStart(intent, startId);
// Update the widget
RemoteViews remoteView = buildRemoteView(this);

// Push update to homescreen
pushUpdate(remoteView);

// No more updates so stop the service and free resources
stopSelf();
}

public RemoteViews buildRemoteView(Context context)
{
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);

//do stuff


return remoteViews;
}

@Override
public void onConfigurationChanged(Configuration newConfig)
{
int oldOrientation = this.getResources().getConfiguration().orientation;

if(newConfig.orientation != oldOrientation)
{
// Update the widget
RemoteViews remoteView = buildRemoteView(this);

// Push update to homescreen
pushUpdate(remoteView);
}
}

private void pushUpdate(RemoteViews remoteView)
{
ComponentName myWidget = new ComponentName(this, MyWidget.class);
AppWidgetManager manager = AppWidgetManager.getInstance(this);
manager.updateAppWidget(myWidget, remoteView);
}

@Override
public IBinder onBind(Intent arg0)
{
// TODO Auto-generated method stub
return null;
}
}

最佳答案

摆脱:

    android:permission="android.permission.BIND_REMOTEVIEWS"
android:exported="true"

来自您的 <service>元素,因为这里都不需要。这应该可以解决您的问题。

关于android - java.lang.SecurityException : Not allowed to start service Intent 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7602490/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com