2015-07-28 47 views
0

我想寫一個BroadcastReceiver來接收應用程序安裝操作。但它失敗了,所以我測試了我的接收器是否正常。所以定製一個意圖,它也提交了。下面是我的代碼。請幫我糾正它。 公共類MyInstallReceiver擴展廣播接收器{// 公共MyInstallReceiver(){// }BroadcastReceiver無法接收意圖

@Override 
public void onReceive(Context context, Intent intent) { 
    Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show(); 
    Log.d("receiver", "Intent Detected"); 
    if (intent.getAction(). equals ("android.intent.action.PACKAGE_ADDED")) { 
     String packageName = intent.getDataString(); 
     //System.out.println ("installed:" + packageName + "package name of the program"); 
     Log.d("receiver","installed:" + packageName + "package name of the program"); 
    } 
} 
} 

定製意圖

public void installAPK(View v){ 
    startActivity(intent); 
    Intent intent = new Intent(); 
    intent.setAction("com.tutorialspoint.CUSTOM_INTENT"); 
    sendBroadcast(intent); 
    Log.d("receiver", "Intent sent"); 
} 

的Manifest.xml

 <receiver 
     android:name=".MyInstallReceiver" 
     android:enabled="true" 
     android:exported="true" > 
     <Intent-filter> 
      <action android:name = "android.intent.action.PACKAGE_ADDED"/> 
      <action android:name = "android.intent.action.PACKAGE_REMOVED"/> 

      <action android:name="com.tutorialspoint.CUSTOM_INTENT"> 
      </action> 
      <Data android:scheme = "package" /> 
     </Intent-filter> 
    </receiver> 

enter code here 
+0

您是否在清單文件中聲明瞭您的'BroadCastReceiver' – bGorle

+0

什麼是您的應用程序包名稱和MyInstallReceiver包名稱 –

+0

@bGorle代碼的第三方是清單。我懷疑它是否正確。 – Eva

回答

0

我不知道在您的清單正確的拼寫,但是這個代碼是肯定的作品非常好:

<receiver android:name=".MyInstallReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.PACKAGE_REMOVED" /> 
      <action android:name="android.intent.action.PACKAGE_ADDED" /> 
      <data android:scheme="package"/> 
     </intent-filter> 
</receiver> 

每個應用程序安裝/卸載將觸發此接收器。

0

Everythong看起來不錯,期待清單中的錯字。它應該是<intent-filter>,而不是<Intent-filter>

+0

嗨,如何看我的接收器是否正在運行? – Eva

+0

根據你的代碼,你應該看到一個烤麪包... – sonic

+0

但是失敗:(,沒有其他的方式? – Eva

相關問題