起動時に開始するサービスを作成しようとしています。
adb に次のエラーが表示されます。
05-31 10:14:24.060 E/AndroidRuntime( 1583):java.lang.RuntimeException: Unable to instantiate receiver MyNameSpace.MyClass.MyBootReceiver: java.lang.ClassNotFoundException: Didn't find class "MyNameSpace.MyClass.MyBootReceiver" on path: /data/app/MyNameSpace.MyClass-1.apk
05-31 10:14:24.060 E/AndroidRuntime( 1583): Caused by: java.lang.ClassNotFoundException: Didn't find class "MyNameSpace.MyClass.MyBootReceiver" on path: /data/app/MyNameSpace.MyClass-1.apk
問題は、そのクラスがのサブクラスとして に存在することを確実に確認できるので、それを見つけることができるように見えるということです。MyBootReceiver
MyNameSpace
MyClass
私のマニフェストは次のように定義されています。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0"
package="MyNamespace.MyClass">
<uses-sdk />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<application>
<receiver android:name=".MyBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<activity android:name=".MyActivity"></activity>
</application>
</manifest>
これはコードです:
namespace MyNamespace
{
[Service]
[IntentFilter(new String[] { "com.xamarin.MyClass" })]
public class MyClass : IntentService
{
private IBinder binder;
public const string MyUpdatedAction = "MyUpdated";
protected override void OnHandleIntent(Intent intent)
{
var myIntent = new Intent(MyUpdatedAction);
SendOrderedBroadcast(myIntent, null);
}
public override IBinder OnBind(Intent intent)
{
binder = new MyServiceBinder(this);
return binder;
}
[BroadcastReceiver]
[IntentFilter(new string[] { MyUpdatedAction }, Priority = (int)IntentFilterPriority.LowPriority)]
public class MyBootReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Android.Content.Intent intent)
{
Log.Info("MyTrace", "MyReceiver OnReceive action: " + intent.Action);
if (intent.Action.Contains("BOOT_COMPLETED"))
{
var pushIntent = new Intent(MyUpdatedAction);
context.StartService(pushIntent);
}
}
}
}
}
このことを機能させるために何をする必要がありますか?