2016-06-11 2 views
0

서비스가있는 애플리케이션이 있습니다. 다음은 내 서비스 코드이며, 기기의 빌드 SMS 앱을 호출 할 수 없습니다.서비스가 내장 앱을 통해 SMS를 보낼 수 없습니다.

public class smsservice extends Service { 
private static final String TAG = "MyService"; 

@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

@Override 
public void onCreate() { 
    super.onCreate(); 
    Log.d(TAG, "Service created."); 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    Log.d("TAG", "Service started."); 
    try { 

     String sb = (String) intent.getSerializableExtra("dest1"); 
     Intent sendIntent = new Intent(Intent.ACTION_VIEW); 
     sendIntent.putExtra("sms_body", sb); 
     sendIntent.setType("vnd.android-dir/mms-sms"); 
     startActivity(sendIntent); 

    } catch (Exception e) { 
     Toast.makeText(getApplicationContext(), 
       "SMS faild, please try again later!", 
       Toast.LENGTH_LONG).show(); 
     e.printStackTrace(); 
    } 

    return super.onStartCommand(intent, flags, startId); 
} 

@Override 
public void onDestroy() { 
    Log.d("slog", "onDestroy()"); 
    super.onDestroy(); 
} 

}

은 내가 놓친 거지 뭔가가 아니면 그것도 가능하다

답변

0

내가 응용 프로그램이 매니페스트 파일

<uses-permission android:name="android.permission.SEND_SMS" /> 

의 권한을 포함해야 유일한 서비스

먼저 서비스를 운영 할 계획이 있으시기 바랍니다. 기본적으로 앱의 어떤 것도 실행되지 않습니다.

둘째, 보안 관리자를 고용 할 수 있기를 바랍니다. 활동이 없으므로 아무 것도 서비스를 실행하지 못하게하는 유일한 방법은 서비스를 내보내는 것입니다. 특별한 트릭을 염두에 두지 않는 한 모든 앱에서 SMS를 보내도록 서비스를 요청할 수 있습니다. 이것이 착취 당하면 사용자는 총과 칼 등으로 당신을 뒤쫓을 수 있습니다.

셋째, 문서화되지 않은 Intent 엑스트라를 사용하는 대신, ACTION_VIEW을 통해 SMS를 보내는 것을 Android 기기가 지원할 필요는 없습니다. ACTION_SEND 또는 ACTION_SENDTO을 사용하십시오.

휴대 전화의 내장 SMS 앱을 호출 할 수 없습니다. 당신이 로그 캣 보면

, 난 당신이 오류 메시지가 당신이 서비스에서 시작 할 수 있도록 IntentFLAG_ACTIVITY_NEW_TASK를 추가 할 필요가 있음을 언급 볼 것이라고 추측하고있다. startService()으로 전화하기 전에 Intent에서 addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)으로 전화해야합니다.

사용자가 일반적으로하고있는 작업의 중간에 활동이 나타나기 때문에 일반적으로 부적절합니다. 사용자가 자신의 장치로 무엇인가를하고 있는지, 갑자기 활동이 포 그라운드를 차지할 때 당신은 알 수 없습니다. 사용자는 게임, 영화, 내비게이션 지침 등을 방해하기 위해 총과 칼을 들고 올 수도 있습니다. 따라서 보안 경비원을 고용해야합니다. 내가 가진

SmsManager를 통해 SMS를 보내기위한 매니페스트 파일

의 권한을 포함한다. ACTION_SEND 또는 ACTION_SENDTO은 필요하지 않습니다.

+0

다른 프로그램을 통해 명시 적으로이 서비스를 호출합니다. 예, 서비스가 내보내집니다. –

+0

@ mine0901 서비스를 호출하는 응용 프로그램에서 startActivity() 또는 startService()를 호출하기 전에 인 텐트에서 addFlags (Intent.FLAG_ACTIVITY_NEW_TASK)를 호출해야합니까? Intendent (Intent.FLAG_ACTIVITY_NEW_TASK)에서 'addFlags ''startActivity()'에 전달할 계획입니다. – CommonsWare

+0

정말 고마워요. 그것은 내 문제를 해결했다. –

관련 문제