在安装应用程序之前在 android phone 中找到数据消息

find datamessage in android phone from before app was installed

假设我有一个使用此方法发送数据消息的应用程序

    smsManager.sendDataMessage(String destinationAddress, String scAddress, short destinationPort,
  byte[] data, PendingIntent sentIntent, PendingIntent deliveryIntent);

假设发送它的人有应用程序而接收它的人没有应用程序,如果没有应用程序的人安装了应用程序,是否有办法在系统中查找该应用程序数据信息以确认最初发送者的电话号码

只要收件人将短信保存在他们的收件箱中,您就可以使用以下代码,from this thread:

// public static final String INBOX = "content://sms/inbox";
// public static final String SENT = "content://sms/sent";
// public static final String DRAFT = "content://sms/draft";
Cursor cursor = getContentResolver().query(Uri.parse("content://sms/inbox"), null, null, null, null);

if (cursor.moveToFirst()) { // must check the result to prevent exception
    do {
       String msgData = "";
       for(int idx=0;idx<cursor.getColumnCount();idx++)
       {
           msgData += " " + cursor.getColumnName(idx) + ":" + cursor.getString(idx);
       }
       // use msgData
    } while (cursor.moveToNext());
} else {
   // empty box, no SMS
}

此代码会将所有消息数据作为字符串存储在 msgData 变量中。然后,您可以在其中搜索目标发件人的 phone 号码、您的应用程序信息等。 要实施此策略,您只需在应用程序的第一个 运行 上调用上述代码即可。请注意,您还必须添加权限:android.permission.READ_SMS 以防您还没有。

...if the person who didn't have the app installs the app is there a way to look in the system for that data message...

一句话,没有。除了接收之外,数据消息不由系统处理。它们只是被 SMS 内容提供者丢弃,因此默认情况下不会保存在任何地方。您的应用必须在收到时安装。

很可能没有。因为如果设备收到数据短信,all the apps will receive a broadcast,如果他们已经注册了。在此之后,数据可供应用程序使用。如果你非常非常非常幸运,其中一个应用程序可以将数据保存到一个可公开访问的区域,你可以从那里获取它,但我建议你不要依赖它。