2016-09-08 45 views
0

即使應用程序未運行,我也正在使用broadcastReceiver來收聽收到的SMS。它工作正常奇巧甚至從最近的應用程序中刪除應用程序,但不是在棒棒堂和更高的設備。當應用程序未運行時,不會調用SMS收到的broadcastReceiver

In Manifest它是這樣定義的。

<receiver 
     android:name=".receivers.MxSMSReceiver" 
     android:enabled="true" 
     android:exported="true" 
     android:permission="android.permission.BROADCAST_SMS"> 
     <intent-filter android:priority="5822"> 
      <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
      <action android:name="android.provider.Telephony.SMS_SENT" /> 
     </intent-filter> 
    </receiver> 

接收器代碼:

public class MxSMSReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(final Context context, final Intent intent) { 

    if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED") || intent.getAction().equals("android.provider.Telephony.SMS_SENT")) { 

    } 
    } 
} 

我不知道是什麼問題。任何幫助表示讚賞

+0

向我們展示你的代碼 – SripadRaj

+0

你必須得到運行許可棉花糖和更大!你有他們嗎? –

+0

@SohailZahid還沒有,請告訴我該怎麼做 – Awadesh

回答

1

全部工作演示運行權限

變化要在運行時獲取的權限名稱。

private String permission = Manifest.permission.RECEIVE_SMS;

要在運行時獲取這些permssions也應在 清單過於聲明。

public class MainActivity extends AppCompatActivity { 

    private Context context; 
    private Button button; 
    private static final int REQUEST_RUNTIME_PERMISSION = 123; 
    private String permission = Manifest.permission.RECEIVE_SMS; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     button = (Button) findViewById(R.id.button); 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 

      public void onClick(View v) { 
       if (CheckPermission(MainActivity.this, permission)) { 
        // you have permission go ahead 
        YouCanReadContactNow(); 
       } else { 
        // you do not have permission go request runtime permissions 
        RequestPermission(MainActivity.this, permission, REQUEST_RUNTIME_PERMISSION); 
       } 
      } 
     }); 
    } 

    private void YouCanReadContactNow() { 
    } 


    @Override 
    public void onRequestPermissionsResult(int permsRequestCode, String[] permissions, int[] grantResults) { 

     switch (permsRequestCode) { 
      case REQUEST_RUNTIME_PERMISSION: { 
       if (grantResults.length > 0 
         && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        // you have permission go ahead 
        YouCanReadContactNow(); 
       } else { 
        // you do not have permission show toast. 
       } 
       return; 
      } 
     } 
    } 

    public void RequestPermission(Activity thisActivity, String Permission, int Code) { 
     if (ContextCompat.checkSelfPermission(thisActivity, 
       Permission) 
       != PackageManager.PERMISSION_GRANTED) { 
      if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity, 
        Permission)) { 
      } else { 
       ActivityCompat.requestPermissions(thisActivity, 
         new String[]{Permission}, 
         Code); 
      } 
     } 
    } 

    public boolean CheckPermission(Context context, String Permission) { 
     if (ContextCompat.checkSelfPermission(context, 
       Permission) == PackageManager.PERMISSION_GRANTED) { 
      return true; 
     } else { 
      return false; 
     } 
    } 
} 

佈局

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/base" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/white" 
    android:orientation="horizontal"> 


    <Button 
     android:id="@+id/button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:layout_margin="10dp" 
     android:text="Request contact permissions" 
     android:textSize="20dp" /> 

</RelativeLayout> 
+0

我應該把這個代碼..在我的接收器代碼? – Awadesh

+0

運行時權限可以請求只在活動 –

+0

所以我必須這樣做主要活動我的意思是在啓動活動的 – Awadesh

0
Make sure from the following : 

android:minSdkVersion="your min" 
android:targetSdkVersion="your max" /> 

<uses-permission android:name="android.permission.RECEIVE_SMS"/> 
<uses-permission android:name="android.permission.READ_SMS" /> 
<uses-permission android:name="android.permission.SEND_SMS"/> 
+0

即android:targetSdkVersion =「23」 – Awadesh

相關問題