0

我正在使用Parse將設備間的通知發送到設備。我設置了一個廣播接收器,當它從Parse接收到通知時收到意圖時生成一個自定義通知。問題是模擬器上的廣播接收器工作得很好,但在設備上它只是沒有收到意圖。BroadcastReceiver在模擬器上工作而不是在設備上

AndroidManifest

<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.VIBRATE" /> 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 


<permission android:protectionLevel="signature" 
    android:name="org.example.app.permission.C2D_MESSAGE" /> 
<uses-permission android:name="com.example.app.permission.C2D_MESSAGE" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" > 
    <activity 
     android:name="org.example.app.MainActivity" 
     android:label="@string/app_name" 
     android:launchMode="singleInstance"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <service android:name="com.parse.PushService" /> 
    <receiver android:name="com.parse.ParseBroadcastReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <action android:name="android.intent.action.USER_PRESENT" /> 
     </intent-filter> 
    </receiver> 
    <receiver android:name="com.parse.GcmBroadcastReceiver" 
     android:permission="com.google.android.c2dm.permission.SEND"> 
     <intent-filter> 
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
      <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 

      <!-- 
       IMPORTANT: Change "com.parse.starter" to match your app's package name. 
      --> 
      <category android:name="org.example.app" /> 
     </intent-filter> 
</receiver> 
    <receiver android:name="com.parse.ParseBroadcastReceiver"> 

     <intent-filter> 

      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <action android:name="android.intent.action.USER_PRESENT" /> 


     </intent-filter> 
    </receiver> 
    <receiver android:name="org.example.app.Receiver" 
     android:priority="999999999" 
     android:exported="true" 
     android:enabled="true"> 
     <intent-filter android:priority="999999999"> 
      <action android:name="org.example.app.A_CUSTOM_INTENT"/> 

     </intent-filter> 
    </receiver> 

</application> 

的這是一個解析通知調用的onClick

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 

    Toast.makeText(context, "this is shown"  , Toast.LENGTH_LONG).show(); 

    try { 

     ParseQuery<ParseInstallation> query = ParseInstallation.getQuery(); 
     JSONObject data = new JSONObject("{\"action\": \"org.example.app.A_CUSTOM_INTENT\"}"); 

     ParsePush androidPush = new ParsePush(); 
     androidPush.setData(data); 
     androidPush.setExpirationTimeInterval(120); 
     androidPush.setQuery(query); 
     androidPush.sendInBackground(); 
     } catch (JSONException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

正如我已經說過了,這個工程在模擬器上只罰款和設備確實收到來自Parse服務的通知,但沒有迴應意圖。感謝您的幫助。

回答

1

看起來你這裏有一個錯誤:

<permission android:protectionLevel="signature" 
    android:name="org.example.app.permission.C2D_MESSAGE" /> 
<uses-permission android:name="com.example.app.permission.C2D_MESSAGE" /> 

我假設正確的值org.example.app(基於清單的其餘部分),所以它應該是:

<permission android:protectionLevel="signature" 
    android:name="org.example.app.permission.C2D_MESSAGE" /> 
<uses-permission android:name="org.example.app.permission.C2D_MESSAGE" /> 

它在模擬器上而不是在設備上工作的原因可能是該設備的Android版本較舊。此錯誤僅影響2.x Android設備。

+0

非常感謝你的回答!我簡直不敢相信我在這個 – user3561047

+0

上幾乎要腰2天了,非常感謝我錯過了改變這兩個參賽作品中的第一個。 –

+0

這兩個代碼之間有什麼區別。我不明白。 – SAndroidD

相關問題