我有一个只有服务的应用程序。以下是我的服务代码,它无法调用设备的内置短信应用程序。
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" />
是否有我遗漏的东西或者甚至可能
答案 0 :(得分:0)
我有一个只有服务的应用程序
首先,我希望你有一个计划来运行你的服务。默认情况下,您的应用中不会运行任何内容。
其次,我希望你能负担得起保安人员。由于您没有活动,因此导致服务运行的唯一方法是导出您的服务。除非您有一些特殊的技巧,否则这意味着任何应用都可以要求您的服务发送短信。如果这被利用,你的用户可能会用枪和刀等来跟踪你。
第三,Android设备不需要支持通过ACTION_VIEW
发送短信,更不用说使用一些未记录的Intent
个附加功能。使用ACTION_SEND
或ACTION_SENDTO
。
它无法调用设备的内置短信应用。
如果您查看LogCat,我猜您会看到一条错误消息,提到您需要将FLAG_ACTIVITY_NEW_TASK
添加到Intent
才能从服务启动它。在致电addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
之前,您需要致电Intent
上的startService()
。
这是因为在用户正在做的事情中间弹出一个活动通常是不合适的。您不知道用户是否正在使用他们的设备执行某些操作,突然之间,您的活动将占用前景。用户也可能会使用枪支和刀具来打断他们的游戏,电影,导航指示等。因此,您应该聘请一些保安人员。
我已在清单文件中包含权限
用于通过SmsManager
发送短信。您不应该ACTION_SEND
或ACTION_SENDTO
。