Проблема с Intent

288
02 декабря 2017, 09:28

Мне нужно отправить ссылку через Intent.

Ссылка имеет вид http://www.google.com.

Когда я отправляю строку с такой ссылкой,при получении через getStringExtra, ссылка имеет вид google.com

В моём коде в str2 находится эта ссылка. По логом видно,что она преображается только тогда,когда при нажатии на уведомление мы переходим в другой Активити,в котором мы обрабатываем эту ссылку.

Код оповещения:

 public void pushText(String str1,String str2){
        Notification notification=new Notification(R.mipmap.ic_launcher,"Status bar",
                System.currentTimeMillis());
        Intent intent=new Intent(this,WebActivity.class);
        intent.putExtra(KEY,str2);
        Log.i(TAG,str2);
        PendingIntent pendingIntent=PendingIntent.getActivity(this,0,intent,0);
        Notification.Builder builder = new Notification.Builder(this);
// оставим только самое необходимое
        builder.setContentIntent(pendingIntent)
                .setSmallIcon(R.drawable.ic_launcher_background)
                .setContentTitle("Оповещение")
                .setContentText(str1); // Текст уведомления
        notification = builder.build();
        notification.defaults = Notification.DEFAULT_SOUND |
                Notification.DEFAULT_VIBRATE;
        nm.notify(NOTIFICATION_KEY,notification);

Код активити, на которую переходим при нажатии:

public class WebActivity extends AppCompatActivity {
    XWalkView web;
    String url;
    public static final String TAG = "WebActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /**Растянуть окно на весь экран**/
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_web);
        Intent intent=getIntent();
        url=intent.getStringExtra(MainActivity.KEY);
        Log.i(TAG,url);
        //Uri uri=Uri.parse(url);
        web=(XWalkView) findViewById(R.id.web_xwalkview);
        web.load(url, null);
    }
    @Override
    public void onBackPressed() {
        finish();
        startActivity(new Intent(getApplicationContext(),MainActivity.class));
    }
}

Update: изменил немного код MainActivity

Intent intent=new Intent(this,WebActivity.class);
        intent.putExtra("URL_PUSH",str2);
        Log.i(TAG,str2);
        PendingIntent pendingIntent=PendingIntent.getActivity(this,0,intent,0);

WebActivity:

Intent intent=getIntent();
url=intent.getStringExtra("URL_PUSH");

Сейчас url=null пишет

Answer 1

Возможно проблема у вас с KEY. Попробуйте передать вот так

intent.putExtra("URL", "http://www.google.com");

На принимающей стороне

    Intent intent=getIntent();
    String url = intent.getStringExtra("URL");

У меня выходит все как задумано

I/log:url :   - http://www.google.com

upd.

Попробуйте изменить -

PendingIntent pendingIntent=PendingIntent.getActivity(this,0,intent,0);

на

PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
READ ALSO
Jetty 9: Static files для виртуального хоста

Jetty 9: Static files для виртуального хоста

Здравствуйте, По этой доке wwweclipse

239
Reset Mock object после первого вызова (Mockito, Junit)

Reset Mock object после первого вызова (Mockito, Junit)

Как сделать reset() для testMock, после первого вызова?

216