2012-11-01 86 views
1

我正在使用monodroid。當PACKAGE_REMOVED操作被捕獲時,我一直收到java.lang.ClassNotFoundException錯誤。我已經在stackflow和其他網站上搜索並嘗試了很多東西,但無法實現這個功能。任何幫助,將不勝感激。monodroid receiver PACKAGE_REMOVED java.lang.ClassNotFoundException

的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly"> 
<uses-sdk android:targetSdkVersion="10" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<application android:icon="@drawable/Icon" android:label="App Store"> 
<receiver android:name=".PackageChangeReceiver" android:exported="true" android:enabled="true"> 
    <intent-filter android:priority="999"> 
    <action android:name="android.intent.action.PACKAGE_REMOVED" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:scheme="package" /> 
    </intent-filter> 
</receiver> 
</application> 
</manifest> 

廣播接收機(PackageChangeReceiver.cs)

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

using Android.App; 
using Android.Content; 
using Android.OS; 
using Android.Runtime; 
using Android.Views; 
using Android.Widget; 
using System.Net; 
using System.IO; 
using Android.Util; 

namespace AppStore 
{ 
[BroadcastReceiver] 
public class PackageChangeReceiver : BroadcastReceiver 
{ 
    public override void OnReceive(Context context, Intent intent) 
    { 
     if ("android.intent.action.PACKAGE_REMOVED".Equals(intent.Action)) 
     { 
      Boolean replacing = intent.GetBooleanExtra(Intent.ExtraReplacing, false); 
      if (replacing) 
      { 
       //do nothing because will be reinstalled again 
      } 
      else 
      { 
       Intent pushIntent = new Intent(context, typeof(UpdatesService)); 
       pushIntent.PutExtra("appname", intent.Data.ToString()); 
       context.StartService(pushIntent); 
      } 
     } 
    } 
} 
} 

回答

0

我接觸直接Xamarin(MonoDroid的)。看來我的錯誤在於手動編輯清單。我做了一個網絡搜索尋找解決方案並添加條目到清單。但是,這並沒有與monodroid代碼連接。由於monodroid autobuild清單,你必須使用廣播接收器像屬性:

[BroadcastReceiver] 
[IntentFilter(new string[] { Intent.ActionPackageRemoved }, Priority = (int)IntentFilterPriority.HighPriority, DataScheme="package")] 
public class PackageChangeReceiver : BroadcastReceiver 
{ 

希望這可以幫助別人。

相關問題