服务无法通过内置应用程序发送短信

时间:2016-06-11 19:33:12

标签: android

我有一个只有服务的应用程序。以下是我的服务代码,它无法调用设备的内置短信应用程序。

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();
}

}

我已在清单文件中包含权限

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

是否有我遗漏的东西或者甚至可能

1 个答案:

答案 0 :(得分:0)

  

我有一个只有服务的应用程序

首先,我希望你有一个计划来运行你的服务。默认情况下,您的应用中不会运行任何内容。

其次,我希望你能负担得起保安人员。由于您没有活动,因此导致服务运行的唯一方法是导出您的服务。除非您有一些特殊的技巧,否则这意味着任何应用都可以要求您的服务发送短信。如果这被利用,你的用户可能会用枪和刀等来跟踪你。

第三,Android设备不需要支持通过ACTION_VIEW发送短信,更不用说使用一些未记录的Intent个附加功能。使用ACTION_SENDACTION_SENDTO

  

它无法调用设备的内置短信应用。

如果您查看LogCat,我猜您会看到一条错误消息,提到您需要将FLAG_ACTIVITY_NEW_TASK添加到Intent才能从服务启动它。在致电addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)之前,您需要致电Intent上的startService()

这是因为在用户正在做的事情中间弹出一个活动通常是不合适的。您不知道用户是否正在使用他们的设备执行某些操作,突然之间,您的活动将占用前景。用户也可能会使用枪支和刀具来打断他们的游戏,电影,导航指示等。因此,您应该聘请一些保安人员。

  

我已在清单文件中包含权限

用于通过SmsManager发送短信。您不应该ACTION_SENDACTION_SENDTO